別のプロジェクトの基底クラス – プログラミング – Home

別のプロジェクトの基底クラス
 
通知
すべてクリア

[解決済] 別のプロジェクトの基底クラス


紅'
 紅'
(@紅')
ゲスト
結合: 17年前
投稿: 48
Topic starter  

こんにちわ。紅'と申します。
VisualStudio2008 の C++/CLI を使用しています。

この環境下で、あるプロジェクトに存在するクラスを
別のプロジェクトで作成するクラスの基底クラスとして
利用したいと考えています。

たとえば以下のような構成となります。
(project A/B は DLL を作成するためのプロジェクトとして作成しています)

project A
ClassA

project B
ClassB : ClassA

実際にやってみると、project B のプロパティで Framework と参照のページの
参照設定を project A に対して行わないとリンクで ClassA が見つからなくて
エラーとなり、参照設定を行うと以下のようなエラーが出てしまいます。

>error C2011: 'ClassA' : 'class' 型の再定義

実際の構成では上記のプロジェクトのほかに実行ファイルを作成するための
プロジェクトもあることから、このプロジェクトとのリンク時に重複してしまい
エラーとなるのかとも思い、実行ファイルのプロジェクトの project A への
参照をはずしてみたのですが、結果は同じでした。

試しに ClassA を project B にコピーしてコンパイルすると成功します。
もちろん ClassB 側では #include もちゃんと通しています。

そもそもこういったことは出来ないのでしょうか。
どこか勘違いをしているような気もします。

ご教示をいただければと思います。
よろしくお願いいたします。

以上です。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>実際にやってみると、project B のプロパティで Framework と参照のページの
>参照設定を project A に対して行わないとリンクで ClassA が見つからなくて
>エラーとなり、参照設定を行うと以下のようなエラーが出てしまいます。
>
>>error C2011: 'ClassA' : 'class' 型の再定義

project Bからproject Aのヘッダーファイルを#includeしているからではないでしょうか。
アセンブリのdllを参照する場合はそのプロジェクトのヘッダーファイルは#includeする
必要はないようです。
(参照するdllはヘッダーファイルのないC#やVB.NETで作成されたものでもかまわないわ
けですし)

ということで、project Aの参照のみにしてみてはどうでしょうか。


返信引用
紅'
 紅'
(@紅')
ゲスト
結合: 17年前
投稿: 48
Topic starter  

subaru さん、ご返信をありがとうございます。

ご指摘の通りでした。お恥ずかしい。。。

あの悩んだ時間を返せって気持ちですが、w
仰られるとおり、C# などで作成したファイルも参照できるのですものね。
C++/CLI に乗り換えているところなので、こんなレベルのところにばかり
つまずいています。

なんにしても解決が出来て助かりました。
感謝いたします。

以上です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました