最近写一个cli程序(B)对另一个c++dll(C)进行包装 再由Csharp程序(A)通过调用B再调用C中的函数/类。
C编译正确,编译B时出现如下链接错误
错误 8 error LNK2028: 无法解析的标记(0A00000C) "public: __thiscall CXXXPlateLimit::MyLibName(void)" (??CXXXPlateLimit@@$$FQAE@XZ),该标记在函数 "public: int __clrcall clrLimite::笑嘻嘻inder::FindKLPlateDongleStone(class System::String ^)" (?FindKLPlateDongleStone@Cxxxnder@clrLimite@@$$FQ$AAMHP$AAVString@System@@@Z) 中被引用 M:/_集成分支/Src/Plugins/IKLSeis.NsasDataModel/DongleCtrlApp/cliLimite/clrLimite.obj
解决:
方法1:
通过如下命令解决
在中添加
#if _DEBUG
#pragma comment(lib, "MyLibNamed.lib")
#else
#pragma comment(lib, "MyLibName.lib")
#endif
方法2:
或静态加载,向B项目中添加已有项将该动态库添加到工程中