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++テストプロジェクトからofelilibを正常にリンクして使用できることがわかりましたが、CLRが有効なプロジェクトからはできません(ofeliがCLRサポートを有効にしてコンパイルされている場合でも)。
私の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;
}
私は何が欠けていますか?