0

未解決の外部エラーを特定するのに苦労しています。

コアプロジェクトを共有する2つの異なるソリューションがあります。ソリューション#1はSnapGameと呼ばれ、ソリューション#2はSnapEditorと呼ばれます。コアプロジェクトはSnapCoreと呼ばれます。

私のSnapGameソリューションはWin32アプリケーションです。SnapCoreプロジェクトを問題なくコンパイル、参照、リンクします。

SnapEditorソリューションはWindowsフォームアプリケーションです。SnapCoreプロジェクトをコンパイルして参照します。ただし、正しくリンクされません。SnapCoreプロジェクトから何かを参照しようとすると、未解決の外部エラーが発生します。

SnapCoreプロジェクトには、いくつかのGDI+サポートクラスがあります。SnapCoreプロジェクトのすべてのクラスは、SnapCore名前空間の下にあります。

Form1.cppファイルは次のとおりです。

#include "stdafx.h"
#include "App.h"
#include "Orient.h"

using namespace SnapCore;
using namespace SnapEdit;

void Form1::Init()
{
SnapCore::Orient    orient;

new App();
}

取得したリンカーエラーは次のとおりです。

1>Form1.obj : warning LNK4248: unresolved typeref token (01000049) for 'Gdiplus.GpCachedBitmap'; image may not run
1>Form1.obj : error LNK2028: unresolved token (0A000019) "public: __clrcall SnapCore::App::App(void)" (??0App@SnapCore@@$$FQAM@XZ) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" (?InitSnapCore@Form1@SnapEdit@@$$FQ$AAMXXZ)
1>Form1.obj : error LNK2028: unresolved token (0A00001A) "public: __clrcall SnapCore::Orient::Orient(void)" (??0Orient@SnapCore@@$$FQAM@XZ) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" (?InitSnapCore@Form1@SnapEdit@@$$FQ$AAMXXZ)
1>Form1.obj : error LNK2019: unresolved external symbol "public: __clrcall SnapCore::App::App(void)" (??0App@SnapCore@@$$FQAM@XZ) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" (?InitSnapCore@Form1@SnapEdit@@$$FQ$AAMXXZ)
1>Form1.obj : error LNK2019: unresolved external symbol "public: __clrcall SnapCore::Orient::Orient(void)" (??0Orient@SnapCore@@$$FQAM@XZ) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" (?InitSnapCore@Form1@SnapEdit@@$$FQ$AAMXXZ)
1>C:\Work\PC\SnapEdit\SnapEdit\Debug\SnapEdit.exe : fatal error LNK1120: 4 unresolved externals

SnapGameソリューションが問題なくリンクする理由を理解できませんが、SnapEditorソリューションは問題なくリンクします。

どんな助けでもいただければ幸いです。

4

1 に答える 1

0

私の理解が正しければ、SnapEditor はマネージド アプリケーションです。SnapCore のようなネイティブ ライブラリを単純に参照することはできません。P/Invoke を使用するか、マネージ ラッパーを記述します

于 2011-11-19T23:07:07.917 に答える