与非MFC控制台应用程序链接的MFC C ++静态库

时间:2017-07-17 11:01:08

标签: c++ visual-studio-2012 mfc static-libraries

我正在尝试编译一个使用实现CString的静态库的控制台程序。控制台应用程序是使用VS向导创建的: 具有预编译头文件,SDL验证但没有ATL或MFC的Win32控制台应用程序。 静态库是一个MFC静态库(向导构造)。

我的错误在哪里?

这是我长期以来所尝试过的:

我使用MFC控件创建了一个新的控制台应用程序 - 这可以使用静态库进行编译。

然后我在必要时控制和修改每个链接选项,比较2个控制台项目。 但第一个控制台应用程序无法编译。 我被困了! 我在Windows 10上使用Visual Studio 2012。

这是代码: 文件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;
}

1 个答案:

答案 0 :(得分:0)

这是解决方案,感谢Jochen Arndt

只需将TestLib声明更改为

即可
TestLib::TestLib(LPCTSTR str)
    : _tst(str)
{
}