c++ - 链接器 - 模块机器类型冲突

标签 c++ c dll linker poco

我正在尝试使用 Visual Studio 2008 在现有 Windows CE 解决方案中使用 C++ POCO 库。该解决方案由 Windows 窗体 C# 项目和 C/C++ native DLL 组成。

我已经使用提供的 .bat 构建脚本构建了 POCO .lib 文件,将它们添加到我的 DLL 项目中,一切都编译正常,除了我无法链接:

PocoFoundationd.lib(PocoFoundationd.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'THUMB'

我的项目的模块机器类型设置为:“未设置”。

我不明白这是因为什么。这是否与 POCO .lib 文件的编译方式有关?我也不明白为什么错误消息显示: PocoFoundationd.lib(PocoFoundationd.dll) 当我将 POCO .lib 文件嵌入到静态编译中时,即我没有使用 DLL对于 POCO 库。唯一的 DLL 就是我试图链接的那个。

我对 C/C++ 代码下面发生的情况了解非常有限,但是 .lib 文件中包含的代码不是与机器无关的吗?

编辑:如果我在项目中将机器类型设置为 ARM,那么冲突就会消失,但我会得到一个带有 Windows API 库之一的新机器:

ws2.lib(WS2.dll) : fatal error LNK1112: module machine type 'THUMB' conflicts with target machine type 'ARM'

最佳答案

好吧,我设法让它发挥作用。

我可以打开最初随库提供的 Visual Studio 项目,并使用正确的目标机器类型重新编译 .lib 文件。

最初我无法做到这一点,因为我没有在我的开发计算机上安装解决方案使用的唯一 SDK,但他们在网站上解释说,必须手动编辑项目和解决方案文件才能替换默认平台名称由要使用的平台名称组成。

所以最后,即使没有使用 DLL,也必须使用正确的目标机器类型来编译所提供项目的 DLL 配置,以便可以链接 .lib在最终项目中。

关于c++ - 链接器 - 模块机器类型冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157532/

相关文章:

c# - java字节和C#字节一样吗?

c++ - glBufferData 不在主函数之外工作

python - 如何从 C++ 使用 TensorFlow Estimator?

c++ - 将处理器宏 __FUNCTION__ 与字符串连接起来

c - 警告 - 赋值使指针来自整数而不进行强制转换

c - 如何在宏定义中包含转义序列#?

c - linux引导代码怎么用C写的?

c++ - 导入库文件是否包含可以在更新时破坏我的应用程序的信息?

c# - 将.cs转换为.dll CS0246错误

python - Boost.Python 多重返回参数