管理対象C++を初めて使用しました。管理されたC++の未解決トークン
私は1つの.sln、Project LibとProject LibTestに2つのマネージC++プロジェクトを持っています。 LibTestはLibを使用します。
Libはコンパイルとリンクが正常です。プロジェクトは.dllとして設定されています。
LibTestも.dllとしてコンパイルされますが、リンクすると、すべてのLib ::メソッドで「未解決のトークン」が取得されます。これらのメソッドの定義はLib .cppファイルで定義されています。
定義をLib.hファイルに移動した場合、すべてが機能します。
私は既にLibプロジェクトに依存するLibTestのリファレンスを変更しました。
私には何が欠けていますか?
EDIT:これはまさに私が持っているものであり、それでも動作しません。
まず、Visual Studio 2008 SP1を使用しています。
第2に、私がC#で同様のエクササイズを行ったとき、うまくいきました。
私は空のC++ CLRプロジェクトを作成しました。私はLibプロジェクトを追加しました。私はマネージドクラスを追加しました。 VSTDはLib.hとLib.cppを生成しました。コンストラクタは自動的に生成されます。
次に私の解決策に別のプロジェクトを追加しました。私はそれをLibTestと呼んだ。 LibTestという別のマネージクラスを追加しました。 LibTest.hとLibTest.cppが生成されます。私はLibTestコンストラクタでのLibをインスタンス化しようとしましたが、リンク時に、それは単に言った:
1> LibTest.obj:エラーLNK2020:。
:未解決のトークン(06000002)のLib ::をCTORここで正確なコードです(.dllはプロジェクトとしてコンパイル)
のLibプロジェクト(application.exeとしてコンパイル)
//Lib.h
#pragma once
ref class Lib
{
public:
Lib(void);
};
//Lib.cpp
#include "Lib.h"
Lib::Lib(void)
{
}
LibTestプロジェクト
// LibTest.h
#pragma once
ref class LibTest
{
public:
LibTest(void);
};
// LibTest.cpp
#include "LibTest.h"
#include "Lib.h"
LibTest::LibTest(void)
{
Lib^ lib = gcnew Lib;
}
int main()
{
return 0;
}
VSTD IDE)を#includeと明示的に指定せずにリンクするすべてのライブラリを管理します。これはかなり素晴らしいです!私はこの全体の管理されていないC++の世界に伝えたい! (私はわずか6年後です!= p) – sivabudh