1

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への依存関係として追加しました。

4

1 に答える 1

1

最初のエラー'populationwin32' : is not a class or namespace nameは、コンパイラがこの名前空間について認識していないことを意味します。

追加します

#include "PopulationWin32.h"

これをVisualStudioに通知します。

また、コンパイラがパスを見つけられるように、インクルードファイルにパスを追加する必要があります。これについては、ここでVC ++ディレクトリ、プロジェクトとソリューション、[オプション]ダイアログボックス、およびここで#includeディレクティブなどについて説明します。

于 2013-01-24T02:04:03.053 に答える