0

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;
}

私は何が欠けていますか?

4

0 に答える 0