我有一个dll和相关的lib文件,其中包含许多std :: vector实例。
在data.h中,我有:
namespace xyz{
extern DllExport std::vector<double> delays;
...
在data.cpp中,我有:
namespace xyz{
std::vector<double> delays{0, 1, 4, 24, 52, 104};
...
data.cpp被编译并链接到mydata.lib,mydata.dll中,并且延迟似乎在导出时可见:
dumpbin /exports ..\bin\debug\mydata.lib | grep delays
?delays@xyz@@3V?$vector@NV?$allocator@N@std@@@std@@A (class std::vector<double,class std::allocator<double> > xyz::delays)
我编译了program.cpp,其中包括data.h,希望使用延迟等方式。
for (int i = 0; i < xyz::delays.size(); i++)
std::cout << xyz::delays[i] << std::endl;
试图链接到mydata.lib但我得到了例如
cl -EHsc -std:c++17 -I../include -Zi -MDd ../src/exe/program.cpp -link -DEBUG ../bin/debug/data.lib /OUT:../bin/debug/program.exe
program.obj : error LNK2001: unresolved external symbol "class std::vector<double,class std::allocator<double> > xyz::delays" (?delays@xyz@@3V?$vector@NV?$allocator@N@std@@@std@@A)../bin/debug/program.exe : fatal error LNK1120: 1 unresolved externals
data.lib,dll中的类定义可以在程序中使用,但是我可以合并一些数据,例如延迟进入lib.dll,以便我可以与在lib,dll上调用的任何程序共享和访问它?
以防使用Windows 10和Microsoft编译器(19.16)和链接器(14.16)的情况不明显。
谢谢...
答案 0 :(得分:0)
dxiv提供的答案和链接帮助我解决了问题。在我的文件data.h中,我现在有了
name
然后我用-DEXPORTING编译dll.dll