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 回答