我想使用.a从DLL导出的文件来链接C ++程序,我得到的完整档案是:标头,DLL文件和VC ++构建的LIB。 现在我使用pexports和dlltool将DLL函数导出到.a库中:
pexports some.dll -o > some.def
dlltool --dllname some.dll --def some.def --output-lib some.a
当我与some.a链接时,我从编译器中得到了错误:
[Linker error] undefined reference to `some_function@8'
所以我查看了如下定义的some.def文件:
LIBRARY "some.dll"
EXPORTS
some_function @1
some_function2 @2
然后我决定切换到另一种方法来从VC ++构建的.LIB文件中导出.a文件:
reimp some.lib
dlltool -d some.def -l libsome.a
然后我使用libsome.a正确链接,因为some.def的定义如下:
LIBRARY "some.dll"
EXPORTS
some_function @8 --> ( param size? )
some_function2 @24
但是当我运行程序时,出现运行时错误: 在some.dll上找不到条目地址“ some_function @ 8” ...
为什么从DLL文件和LIB文件导出.a的结果不同?我该如何解决这个问题?谢谢。