2017-07-17 87 views
0

我試圖編譯一個控制檯程序,它使用實現CString的靜態庫。控制檯應用程序已經使用VS嚮導創建: Win32控制檯應用程序具有預編譯頭文件, SDL驗證,但不包含ATL或MFC。 靜態庫是一個MFC靜態庫(嚮導構造)。MFC C++靜態庫與非MFC控制檯鏈接應用程序

哪裏是我的錯誤?

這是我這麼久曾嘗試:

我創建使用MFC控制新的控制檯應用程序 - 這編譯靜態庫的罰款。

然後我在必要時控制和修改了每個鏈接選項,比較了2個控制檯項目。 但第一個控制檯應用程序不能編譯。 我被困住了! 我與Visual Studio 2012在Windows 10

在這裏工作是代碼: 文件TestLib.h

#pragma once 
#include <atlstr.h> 

class TestLib 
{ 
public: 
    TestLib(){}; 
    TestLib(const CString &tst); 
    virtual ~TestLib(void); 
private: 
    CString _tst; 
}; 

Fichier TestLib.cpp

#include "stdafx.h" 
#include "TestLib.h" 

TestLib::TestLib(const CString &tst) 
    : _tst(tst) 
{ 
} 

TestLib::~TestLib(void) 
{ 
} 

Fichier ConsoleTest2.cpp

// ConsoleTest2.cpp : définit le point d'entrée pour l'application console. 
#include "stdafx.h" 
#include "TestLib.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    TestLib *tst = new TestLib(); // This compile fine ! 
    //TestLib *tst = new TestLib(_T("Test")); // This generates LNK2019 link error 
    return 0; 
} 
+0

你在stdafx.h中包含哪些文件?使用MFC時使用ATL頭是不夠的。你必須包含afx.h!否則,可以自由使用ATL(CString也是ATL的一部分) – xMRi

+0

stdafx.h文件包含targetver.h,stdio.h和tchar.h ...我只使用了項目嚮導生成器獲取標準文件,然後添加Lib類。 – BartmanDilaw

回答

0

這是解決方案,感謝Jochen A rndt

就必須改變TESTLIB聲明

TestLib::TestLib(LPCTSTR str) 
    : _tst(str) 
{ 
} 
相關問題