MSVS 2010 Express に C++ プロジェクトがあります。このプロジェクトを検証するために、いくつかの単体テストを作成する予定です。現在、彼らは次のように進んでいます。
#include "header.h" //Header is the header for the source I want to test
void testSomeFunction()
{
//Call function (from external src, prototype in header.h)
//Save output to file
}
int main()
{
testSomeFunction();
return 0;
}
これらのソース ファイルをプロジェクト外で作成しています。それぞれを個別の実行可能ファイルとして実行できるようにしたいのですが、Microsoft リンカでそれらをリンクするのに問題があります。
これはこれまでのところ私の問題です(CMD出力):
cl ut_Converter.cpp Converter.obj
ut_Converter.cpp
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:ut_Converter.exe
ut_Converter.obj
Converter.obj
Converter.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in ut_Converter.obj
Converter.obj : fatal error LNK1313: pure module detected; cannot link with ijw/native modules
私は Microsoft 製品を実際に使用したことはありません。GNU ツール GCC と make の使用には慣れていますが、これには Microsoft ツールを使用する必要があり、それらがどのように機能するのかわかりません。
多分私はこれらのテストを愚かな方法で構築しようとしているのかもしれませんが、それは私が今考えることができる最良の方法です.
これは私がやりたいことです:
- プロジェクトのソース ファイルをオブジェクト ファイルにコンパイルする
- テスト ファイルをオブジェクト ファイルにコンパイルする
- テスト オブジェクト ファイルを適切なプロジェクト オブジェクト ファイルにリンクして、テスト実行可能ファイルを生成します。
どうすればそれを行うことができますか?(すべてを互換にするために設定する必要がある設定がいくつかあると思いますが、それらが何であるか、またはどのように設定するかはわかりません)
追加: デバッグ レベルについて言及していることは知っていますが、他の互換性のない設定があることは間違いありません。プログラムの設定を調べて、実行時に cl.exe に渡す方法はありますか?
編集:コマンド プロンプトと言うときは、すべての環境変数がセットアップされた Visual Studio に付属するものを意味します。