Visual Studioソリューションには、ネイティブC ++コードを含むdll、アンマネージ型のラッパーを実装しようとしているC ++ / CLI dll、そして最後にC#アプリケーションがあります。
現在、ラッパーdllでアンマネージ型を参照できません。
コードスニペット:
// In the unmanged file (in the unmanged dll project)
using std::vector;
namespace populationwin32
{
class PopulationWin32
{
public:
PopulationWin32();
// ...
};
}
// In the managed file. (in the manged dll project)
using namespace system;
using populationwin32::PopulationWin32;
namespace GSODFileParsing
{
public ref class PopulationWin32Wrapper
{
public:
PopulationWin32Wrapper();
private:
PopulationWin32 *_populationWin32; // unmanaged object
}; // End class
} // End namespace
管理されたdll(ラッパーを含む)をコンパイルしようとすると、次のエラーが発生します。
Error 1 error C2653: 'populationwin32' : is not a class or namespace name
Error 2 error C2873: 'PopulationWin32' : symbol cannot be used in a using-declaration
Error 4 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
これらのエラーが何を意味するのか、何か考えはありますか?管理されていないdllに正しくリンクされていないことが原因だと思いますが、これを行う方法がわかりません。オンラインで見つけたものはすべて、何か違うことを言っています。管理されていないライブラリ(dllプロジェクト)を管理されているVC ++ / CLIラッパーライブラリ(dllプロジェクト)に正しく完全にリンクする方法を知っている人はいますか?
注:これらのライブラリは両方とも、単一のVisualStudioソリューションのプロジェクトです。
編集:私が追加したOlafDietscheのコメントに感謝します
#include "PopulationWin32.h"
ラッパーヘッダーファイルに対して、次のエラーが発生します。
エラー1エラーC1083:インクルードファイルを開くことができません:'PopulationWin32.h':そのようなファイルまたはディレクトリはありません
欠落している設定がありますか、それとも両方のDLLプロジェクトにヘッダーファイルをインクルードする必要がありますか?ところで、プロパティ->構成プロパティ->リンカー->入力->追加の依存関係を介して、管理されていないdll出力.libファイルを管理対象dllへの依存関係として追加しました。