.NET を使用するのはこれが初めてで、複数のプロジェクトを使用すると苦労します。私は何を間違っていますか?これは私がしたことです:
1 新しいプロジェクト (およびソリューション) を作成します。「Lib」と呼ばれる「クラス ライブラリ」。
2 次のコードを使用して、ファイル「Comp1.h」を「ヘッダー ファイル」に追加します。
#ifndef COMP1_H
#define COMP1_H
class comp1
{
public:
comp1(void);
~comp1(void);
}
#endif
3 次のコードを使用して、ファイル「Comp1.cpp」を「ソース ファイル」に追加します。
#include "stdafx.h"
#include "Comp1.h"
comp1::comp1(void){}
comp1::~comp1(void){}
4 自動的に作成された「Lib.h」ファイルのコードを次のように上書きします。
#ifndef LIB_H
#define LIB_H
#include "Comp1.h"
#endif
5 「Test」という名前の「CLR 空のプロジェクト」を追加し、スタートアップ プロジェクトとして設定します。
6 次のコードを使用して、ファイル「test.cpp」を「テスト」プロジェクトの「ソース ファイル」に追加します。
#include "../Lib/Lib.h"
#using "../Debug/Lib.dll"//Is this line mandatory?
int main()
{
comp1 component;
return 0;
}
7 「Test」プロパティに参照として「Lib」を追加します。
8 「Project Dependencies」で、「Test」が「Lib」に依存していることを確認します。
9 両方を /clr としてコンパイルします。
これは私が得るものです:
1>test.obj : error LNK2028: unresolved token (0A000009) "public: __thiscall comp1::comp1(void)" (??0comp1@@$$FQAE@XZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>test.obj : error LNK2028: unresolved token (0A00000A) "public: __thiscall comp1::~comp1(void)" (??1comp1@@$$FQAE@XZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall comp1::~comp1(void)" (??1comp1@@$$FQAE@XZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall comp1::comp1(void)" (??0comp1@@$$FQAE@XZ) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
インライン関数を作成すると、この問題は発生しません。
フォーラムでは、ファイルをインクルードする際の間違いについての回答を見つけることができますが、私はすべてを正しくコーディングしたと確信しています。
ありがとうございました。