我有这个静态(.a / .lib)库,我想在动态(.dll)中绑定它。
可以说静态库是libColors.a
,动态是SWC.dll
。
现在我已经更改了libColors.a
项目属性以创建一个静态库 - 构建它 - 我没有找到任何.dll
创建的,只有.o和.a文件是预期的。我切换到我的SWC.dll
项目并更改其属性以创建动态库并选中该框以创建.a文件 - 链接libColors.a
- 构建它 - 和.dll文件被建造。 (另请注意,我在__declspec(import/export)
es)上添加了class
规范
现在我希望在可执行文件中使用此SWC.dll
。但是,当我在可执行文件中仅包含SWC.h
文件时,它会获得大量未定义的引用。因为我没有在SWC.h
上调用任何函数,所以这里似乎存在问题。所以,我在{。{1}}上添加了我的.exe构建选项,现在它构建时没有错误。但是当我运行它时,它说我需要SWC.a
?我错过了什么?
答案 0 :(得分:0)
您可以使用objdump,CFF Explorer或Dependency Walker等工具查看相关PE-COFF可执行文件的导入表。
可能的解释是,编译Colors
项目的方式实际上不是静态库。您可以通过检查SWC.dll
和测试可执行文件的导入表来检查这一点。您可能会在其中一个中找到Colors.dll
的导入条目以及它尝试导入的函数。
检查Color.h
中声明的数据和函数,并确保它们在任何地方都没有用__declspec()
进行修饰。如果Color.h
中的函数预处理为'SWC'中的__declspec(dllimport)
,则可能会导致您遇到的问题。