我正在尝试在 VS2010 下在包含 C# 和 C++ 项目的 CLI/C++ 解决方案中使用OFELI库。简而言之,UI 是用 WPF 编写的,并且计算是在支持 CLR 的 C++ 中完成的。
我下载了OFELI源,将解决方案转换为VS2010格式,并能够成功构建静态库。但是,在链接到 lib (ofeli-debug.lib) 时会导致大量 LNK2005 错误;
error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ) already defined in msvcprtd.lib(MSVCP100D.dll)
我注意确保 lib 是使用 /MDd 设置构建的,就像项目一样。如果我将项目设置为忽略 msvcprtd.lib,我最终会遇到大量 LNK2019 错误,正如我所料。
通过实验,我发现我可以从非 CLR C++ 测试项目中成功链接和使用 ofeli 库,但不能从启用 CLR 的项目中链接和使用(即使在启用 CLR 支持的情况下编译 ofeli 也是如此)。
下面是一个在我的 CLR 项目中因许多 LNK2005 错误而失败的简单代码片段。
#include "stdafx.h"
#include <OFELI.h>
using namespace OFELI;
int _tmain(int argc, _TCHAR* argv[])
{
Mesh(10, 1); // Instance an object from the OFELI namespace
return 0;
}
我错过了什么?