未解决的外部问题

时间:2011-11-19 23:02:15

标签: c++ namespaces unresolved-external multiple-projects

我很难搞清楚我未解决的外部错误。

我有两个不同的解决方案,它们共享一个核心项目。解决方案#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解决方案不会。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,SnapEditor是一个托管应用程序。它不能简单地引用像SnapCore这样的本机库。使用P / Invoke或write a managed wrapper