未解决的外部

Unresolved external

本文关键字:外部 未解决      更新时间:2023-10-16

我很难找出我未解决的外部错误。

我有两个不同的解决方案,它们都共享一个核心项目。解决方案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:WorkPCSnapEditSnapEditDebugSnapEdit.exe : fatal error LNK1120: 4 unresolved externals

我不明白为什么我的SnapGame解决方案链接没有问题,但SnapEditor解决方案不会。

如果我理解对了,SnapEditor是一个托管应用程序。它不能简单地引用原生库,比如SnapCore。使用P/Invoke,或者编写托管包装器