CStringを実装した静的ライブラリを使用するコンソールプログラムをコンパイルしようとしています。コンソールアプリケーションはVSウィザードで作成されました: プリコンパイルされたヘッダー、 ATLまたはMFCのないSDL検証。 スタティックライブラリはMFCスタティックライブラリ(ウィザード構成)です。非MFCコンソールアプリケーションにリンクされたMFC C++静的ライブラリ
私の間違いはどこですか?
これは私がそう長くしようとしているものです:
私は、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;
}
にTESTLIB宣言を変更する必要がありますか? MFCを使用する場合は、ATLヘッダーを使用するだけでは不十分です。あなたはafx.hを含める必要があります!それ以外の場合は、ATLのみを使用しても構いません(CStringはATLの一部であるテンプレートです) – xMRi
stdafx.hファイルにはtargetver.h、stdio.h、tchar.hが含まれています。標準ファイルを取得し、Libクラスを追加します。 – BartmanDilaw