最近、Qt5.1.0でプロジェクトを開始しました。
いくつかの開発の後、Google V8を使用してJavascriptでスクリプト システムを作成することにしました。Windows 7 x64では、 V8をコンパイルする唯一の方法は
msvc2012であり、使用する .lib ファイルを 3 つ取得しました。V8 のみを使用
する単一のプロジェクトでは、すべてがうまく機能します。しかし、Qt5 を使用して V8 を既存のプロジェクトと統合するのは、もう少し複雑です。
私が使用している最小限のコードの例を次に示します: (もちろん、このプロジェクトにはさらに多くのファイルがあります...)
#include <QApplication>
#include <v8.h>
using namespace v8;
int v8_test() {
Isolate* isolate = Isolate::GetCurrent();
HandleScope handle_scope(isolate);
Handle<Context> context = Context::New(isolate);
Persistent<Context> persistent_context(isolate, context);
Context::Scope context_scope(context);
Handle<String> source = String::New("'Hello' + ', World!'");
Handle<Script> script = Script::Compile(source);
Handle<Value> result = script->Run();
persistent_context.Dispose();
String::AsciiValue ascii(result);
printf("%s\n", *ascii);
return 0;
}
int main(int ac, char **av)
{
std::cout<<"Starting application"<<std::endl;
QApplication app(ac, av);
v8_test();
//Do something else
return app.exec();
}
この時点で、このタイプのリンク エラーが多数発生しました。
1>v8_base.x64.lib(api.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in moc_aCertainFile.obj
1>v8_base.x64.lib(v8threads.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in moc_aCertainFile.obj
1>v8_base.x64.lib(checks.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in moc_aCertainFile.obj
Qtはフラグ付きでコンパイルされたようで/MDd
、V8はフラグ付きでしかコンパイルできません/MTd
。
多くの調査とテストの後、私は何も見つけることができませんでした...
誰もこの問題を解決する手がかりを得ましたか?
前もって感謝します。