2017-07-17 86 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) 
{ 
} 
相关问题