2017-07-17 41 views
0

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; 
} 
+0

にTESTLIB宣言を変更する必要がありますか? MFCを使用する場合は、ATLヘッダーを使用するだけでは不十分です。あなたはafx.hを含める必要があります!それ以外の場合は、ATLのみを使用しても構いません(CStringはATLの一部であるテンプレートです) – xMRi

+0

stdafx.hファイルにはtargetver.h、stdio.h、tchar.hが含まれています。標準ファイルを取得し、Libクラスを追加します。 – BartmanDilaw

答えて

0

ここは解決策です.Jochen Aのおかげです。 rndt

ちょうどあなたがstdafx.hを含んで何をしたかのファイル

TestLib::TestLib(LPCTSTR str) 
    : _tst(str) 
{ 
} 
関連する問題