2011-11-19 3 views
0

해결되지 않은 외부 오류를 알아내는 데 어려움이 있습니다.해결되지 않은 외부

둘 다 핵심 프로젝트를 공유하는 두 가지 솔루션이 있습니다. 솔루션 # 1은 SnapGame이고 솔루션 # 2는 SnapEditor입니다. 핵심 프로젝트는 SnapCore입니다.

내 SnapGame 솔루션은 Win32 응용 프로그램입니다. SnapCore 프로젝트를 아무런 문제없이 컴파일, 참조 및 링크합니다.

SnapEditor 솔루션은 Windows Forms 응용 프로그램입니다. 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)" ([email protected]@@[email protected]) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" ([email protected]@[email protected]@$$FQ$AAMXXZ) 
1>Form1.obj : error LNK2028: unresolved token (0A00001A) "public: __clrcall SnapCore::Orient::Orient(void)" ([email protected]@@[email protected]) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" ([email protected]@[email protected]@$$FQ$AAMXXZ) 
1>Form1.obj : error LNK2019: unresolved external symbol "public: __clrcall SnapCore::App::App(void)" ([email protected]@@[email protected]) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" ([email protected]@[email protected]@$$FQ$AAMXXZ) 
1>Form1.obj : error LNK2019: unresolved external symbol "public: __clrcall SnapCore::Orient::Orient(void)" ([email protected]@@[email protected]) referenced in function "public: void __clrcall SnapEdit::Form1::InitSnapCore(void)" ([email protected]@[email protected]@$$FQ$AAMXXZ) 
1>C:\Work\PC\SnapEdit\SnapEdit\Debug\SnapEdit.exe : fatal error LNK1120: 4 unresolved externals 

내가 알아낼 수없는 이유없는 문제 내 SnapGame 솔루션 링크,하지만 SnapEditor 솔루션은 그렇지 않습니다.

도움을 주시면 감사하겠습니다.

+0

SnapEditor가 SnapCore에 종속되어 있다고 지정 했습니까? – Mordachai

+0

예. SnapEdit 프로젝트의 Dependecies 프로젝트에서 SnapEdit 프로젝트는 SnapCore 프로젝트에 종속적이며 SnapCore 프로젝트에는 종속성이 없습니다. – SnapGames

답변

0

내가 올바르게 이해한다면 SnapEditor는 관리되는 응용 프로그램입니다. 단순히 SnapCore와 같은 기본 라이브러리 만 참조 할 수는 없습니다. P/Invoke 또는 write a managed wrapper을 사용하십시오.

+0

이것이 (문제 일 가능성이있는) 경우 관리 프로젝트로 코어를 컴파일 할 수도 있습니다. #defines가 필요하거나 관리되는 클라이언트와 관리되지 않는 클라이언트가 모두 컴파일하도록 허용해야하는 것이 있습니다. – Mordachai

+0

이것은 모든 문제가 저에게 새로운 것이므로 모든 질문에 사과드립니다. 나는 P/Invoke 옵션과 IJW를 봤다. P/Invoke가 DLL을 처리해야하는 것처럼 보입니까? 그러나 내 SnapCore 프로젝트는 lib를 만듭니다. 게다가 P/Invoke, IJW 및 관리되는 래퍼를 작성하는 것은 모두 많은 작업이 필요한 솔루션처럼 보입니다. Mordachai, 내 SnapCore lib를 관리되지 않는 C++ lib 대신 관리되는 C++ lib로 컴파일하도록 제안 하시겠습니까? 그렇다면 훨씬 간단한 옵션이라고 생각합니다. – SnapGames

+1

SnapCore가 순수 C++ 인 경우 즉, Win32 API 함수를 직접 호출하지 않으면 .NET 용으로 간단하게 다시 컴파일 할 수 있습니다. – kol