【发布时间】:2018-09-12 05:15:03
【问题描述】:
我正在尝试将 C++ 库包装到托管项目可以使用它。我使用的第三方库是共享库。它旨在链接加载时间。我有头文件,.lib 文件是 DLL 导入库和 .DLL 文件。
这是我到目前为止所做的:- 1.创建CLR项目。 2. C/C++->General->Additional Include Directories增加头文件路径 3. 在 Linker->General 中设置“Additional Library Directories”。 4.在Linker->Input->Additional Dependencies中添加lib名称
执行此操作后,我收到 LNK2005 链接错误,然后是 LNK1169。创建项目后我做的唯一一件事就是包含我试图包装的 C++ 库中的头文件。我做错了什么?
错误 LNK2005: "public: virtual char const * __cdecl std::exception::what(void)const" (?what@exception@std@@UEBAPEBDXZ) 已经在...中定义 致命错误 LNK1169:找到一个或多个多重定义的符号
【问题讨论】:
-
你想使用库statically or dynamically吗?
-
我很乐意使用任何方式。在 C++/CLI 项目中做这件事的首选方式是什么?我正在尝试通过使用 .lib 文件来使用静态方式,但出现奇怪的 LNK2005 错误。错误 LNK2005:“public: virtual char const * __cdecl std::exception::what(void)const” (?what@exception@std@@UEBAPEBDXZ) 已在 ....中定义。
-
您的库是如何编译的,您目前如何尝试链接它?在没有看到您的代码的情况下,我最好的猜测是您静态编译它并尝试动态链接它。至于在 C++/CLI 库中执行此操作的首选方式,我很确定这取决于您和您的需求,如果我没记错的话,没有首选方式,只要您不尝试动态链接静态编译的库,反之亦然。
-
您收到这些错误是因为您尝试将 C++ 库静态链接到 C# 程序。你之前有tried making a Managed C++ Wrapper?吗?
-
我认为回答这个问题的唯一方法是写一个详尽的教程,你可能应该在谷歌上搜索一些。 (这并不是说它一定是 OT,但你可能会更快地找到一个真正的教程,而不是等待有人在这里写它。)
标签: c++ c++-cli native word-wrap