我用 MingW/MSYS 编译了几个库...生成的静态库始终是 .a 文件。
当我尝试将库与 MSVC 项目链接时,Visual Studio 抛出“无法解析的外部符号”...这意味着 .a 静态库与 MS C++ 链接器不兼容。我认为它必须转换为 MSVC 兼容的 .lib 文件。
.a 和 .lib 只是 .o 或 .obj 文件的 AR 存档,那么有什么方法可以在 MSVC 项目中使用 MingW 编译的库吗?或者我是否必须仅在一个编译器/链接器中编译/链接所有内容 - 仅 MSVC/仅 MinW?
MingW 编译器据说与 MSVC 兼容。
我读了一些关于这个主题的帖子,但他们大多说将文件重命名为 .lib 应该可以完成工作,但不幸的是它对我不起作用。
我尝试链接的库是用 C 编写的。
MSVC 链接器抛出如下错误:
error LNK2019: unresolved external symbol "int __cdecl openssl_call(struct ssl_State *,int,int,int)" (?openssl_call@@YAHPAUssl_State@@HHH@Z) referenced in function _main MyAPP.obj
...还有 4 个相同的错误,涉及从我的应用程序调用的其他函数。
感谢您的任何建议。
基于此错误,您发表了评论:
错误 LNK2019:无法解析的外部
符号“int __cdecl
openssl_call(结构 ssl_State
*,int,int,int)" (?openssl_call@@YAHPAUssl_State@@HHH@Z)
在函数 _main MyAPP.obj 中引用
所有其他 4 个错误仅与
其他函数名称
尝试放置extern "C"
围绕 openssl 的包含文件。例如:
extern "C" {
include "openssl.h"
}
using 外部“C” http://msdn.microsoft.com/en-us/library/0603949d%28VS.80%29.aspx将指示编译器这些函数正在使用 C 链接,而不是 C++,这将阻止它执行名称修改 http://blogs.msdn.com/vijay/archive/2009/10/02/what-is-name-decoration-or-name-mangling.aspx关于功能。因此它将在库中查找函数 openssl_call 而不是 ?openssl_call@@YAHPAUssl_State@@HHH@。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)