与非 MFC 控制台应用程序链接的 MFC C++ 静态库
MFC C++ static library linked with non MFC console app
我正在尝试编译一个控制台程序,该程序使用静态库实现 CString.The 控制台应用程序已使用 VS 向导创建:
具有预编译 headers、SDL 验证但没有 ATL 或 MFC 的 Win32 控制台应用程序。
静态库为MFC静态库(向导构造)
我的错误在哪里?
这是我长期尝试的方法:
我使用 MFC 控件创建了一个新的控制台应用程序 - 使用静态库可以很好地编译它。
然后我在必要时控制和修改了每个 link 选项,比较了 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;
};
费希尔 TestLib.cpp
#include "stdafx.h"
#include "TestLib.h"
TestLib::TestLib(const CString &tst)
: _tst(tst)
{
}
TestLib::~TestLib(void)
{
}
费希尔 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;
}
这是解决方案,感谢 Jochen Arndt
只需要将 TestLib 声明更改为
TestLib::TestLib(LPCTSTR str)
: _tst(str)
{
}
我正在尝试编译一个控制台程序,该程序使用静态库实现 CString.The 控制台应用程序已使用 VS 向导创建: 具有预编译 headers、SDL 验证但没有 ATL 或 MFC 的 Win32 控制台应用程序。 静态库为MFC静态库(向导构造)
我的错误在哪里?
这是我长期尝试的方法:
我使用 MFC 控件创建了一个新的控制台应用程序 - 使用静态库可以很好地编译它。
然后我在必要时控制和修改了每个 link 选项,比较了 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;
};
费希尔 TestLib.cpp
#include "stdafx.h"
#include "TestLib.h"
TestLib::TestLib(const CString &tst)
: _tst(tst)
{
}
TestLib::~TestLib(void)
{
}
费希尔 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;
}
这是解决方案,感谢 Jochen Arndt
只需要将 TestLib 声明更改为
TestLib::TestLib(LPCTSTR str)
: _tst(str)
{
}