やりたいこと
プロジェクトChildからプロジェクトParentのクラスを利用したいです。
発生している問題・エラーメッセージ
プロジェクトParentをビルドすると、以下のコンパイルエラーが発生します。
(ファイルパスは前方省略してます)
2>Child\Child.h(10,11): error C2039: 'Class1': 'Parent' のメンバーではありません 2>Child\Child.h(11,5): error C2039: 'method': 'Parent::Class1' のメンバーではありません 2>Parent\Parent.h(7): message : 'Parent::Class1' の宣言を確認してください
該当のソースコード
プロジェクト「Parent」の「Parent.h」(※C++/CLIです)↓
C++
1#pragma once 2 3using namespace System; 4 5namespace Parent { 6public 7class Class1 { 8public: 9 void method() {} 10}; 11} // namespace Parent
プロジェクト「Child」の「Child.h」(※C++/CLIです)↓
C++
1#pragma once 2 3using namespace System; 4 5namespace Child { 6public 7class Class1 { 8public: 9 void test() { 10 Parent::Class1 c; 11 c.method(); 12 } 13}; 14} // namespace Child
Parent.cpp, Child.cpp はプロジェクト作成時の初期状態のまま。
試したこと
普通の class (unmanaged)ではなく ref class (managed)であればコンパイル、リンクが成功しました。
しかし、unmanaged なクラスでコンパイル、リンクさせたいです。
プロジェクトの作成手順
- 「CLR クラス ライブラリ(.NET Core)」(C++) で Parent を作成
- 「CLR クラス ライブラリ(.NET Core)」(C++) で Child を作成
- Child の参照に Parent を追加
- 両プロジェクトの「.NET Core ターゲット フレームワーク」を「.NET Core 3.1」に変更
補足情報
- Visual Studio 2019
- C++ は初心者ではありませんが、C++/CLI や .NET は初心者です
知りたいこと
- ビルドを成功させる方法(__declspec(dllexport)とかを使うのでしょうか)
- なぜ ref class では成功するのか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/19 04:45