当前位置: 首页 > 知识库问答 >
问题:

C++静态库与平台工具集的兼容性

莫飞翮
2023-03-14

错误4错误LNK2001:未解析的外部符号“__declspec(dllimport)public:__thiscall std::basic_string,类std::allocator>::basic_string,类std::allocator>(void)”(__imp_??0?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@qae@xz)

是否有任何方法可以使库与所有平台工具集兼容,并使用一些标准类,如std::string

供参考:VS2008使用的是v90平台工具集,VS2013使用的是v120平台工具集。

Edit:

如果我在库中使用一些标准方法,比如std::vector,我就不能再实现这个库了。

这是有效的:

unsigned int TestClass::TestMethod()
{   
    return 2;
}

这不会:

unsigned int TestClass::TestMethod()
{
    std::vector<unsigned char> vtest;
    vtest.push_back(0xff);

    return 2;
}

共有1个答案

章青青
2023-03-14

正如评论中所讨论的,您需要确保:

>

  • 运行时库与旧库不匹配(/mt/md选项)

    /gl(即整个程序优化)被禁用

  •  类似资料:
    • 说明 由于在跨端开发中,必不可少的会遇到不同端需要有不同实现的情况。参考滴滴chameleon中的多态,megalo中实现了类似的跨平台兼容方案。需要使用时,请保证@megalo/target的版本号大于或等于0.7.2。 js的跨平台兼容 megalo中下面两种形式的引用会被特殊处理: [path-to-name]/[name]/index.mpjs [path-to-name]/[name]

    • 我正在尝试使用Visual Studio2012构建一个程序。它的平台工具集属性设置为“v110_xp”,但我将其更改为“v110” 现在我得到了一个错误: null

    • 我有一个由大量项目(C和C#)组成的解决方案。我将解决方案升级到VS2015,因此大多数解决方案的工具集版本现在设置为V140,但少数项目需要保留在V110(第三方库等)中。当我在Visual Studio 2015中构建解决方案时,它构建得很好,但当TeamFoundationServer尝试构建它时,它失败,出现以下错误: C:\ProgramFiles(x86)\MSBuild\Micros

    • 问题内容: 请有人帮我解决这个问题,我有一个Ubuntu服务器(仅终端机),我下载了android SDK,我安装了java,在/ tools中尝试运行./android时遇到错误,缺少平台工具。那么,由于某些原因,我如何从终端安装平台工具,却无法在任何地方找到此信息。 我发现的每个资源都假设我有一个GUI而不是终端,甚至是ubuntu的页面-https: //help.ubuntu.com/co

    • 使用静态网站构建工具不但可以让我们构建静态网站的工作大大简化,而且还可以迅速验证自己的想法,以最高效的方式开发网站。 这一章中将分别介绍三款流行的开源静态网站构建工具,然后说明为什幺我们选择使用Hugo来构建静态网站。 对比 下面是三款静态网站构建工具的简要对比: 工具名称 开发语言 构建效率 典型用例 特点 jekyll ruby 比较慢 GitHub Pages默认的静态网站构建工具、kube

    • 问题内容: 我设计了一个在jdk 7中正常工作的javafx应用程序。当我尝试在java 8中运行它时,出现以下异常: 我发现原因是在控制器类的initialize方法中,我无法在任何静态组件中使用内置方法。(例如:staticMyTextField.setText()在Java 8中引起了问题,但在Java 7中没有引起问题)。我无法找到javafx指南中与此有关的任何文档。有人可以提供一些想法