将MSVC符号导出名称与Qt Creator导入查找匹配

时间:2014-03-29 09:51:14

标签: c++ qt visual-c++ linker dllexport

我有一个我在MSVC2012中编译的库,可以动态链接。通过宏__declspec(dllexport),每个声明前面都有LIBAPI。这样构建正常并创建一个dll + lib,其中包含_funcname等符号(来自使用dumpbin.exe检查)。

在Qt Creator中(由相同的MSVC工具链支持)我包含用于构建库的相同标头,但是包含将LIBAPI宏更改为__declspec(dllimport)的额外定义。这是我收到链接器错误的地方,因为它正在寻找__imp_funcname。如果我将LIBAPI重新定义为零,则链接器将代之以查找funcname(不在前面的下划线)。

我已经验证了编译链接工具链中的所有其他工具正常工作,唯一的问题是这个函数装饰器不匹配。

问题是:如何在构建库时强制约定(最好是导出__imp_样式)或强制Qt找到单个下划线符号?

1 个答案:

答案 0 :(得分:0)

答案结果是我使用x64版本的Qt Creator启动了项目,所以它使用x64工具链进行编译和链接。从Qt Creator x86创建一个全新的项目,可以将所有文件复制到已排序的所有文件中