3

C で記述されたサード パーティ (クローズド ソース) スタティック ライブラリ (.lib) があり、C++ と互換性のあるヘッダーと非常に単純な C++ テスト プログラムがあります。

Qt-creator で新しいプロジェクトを作成した後、プログラムをコンパイルしてスタティック ライブラリにリンクしようとしましたが、リンカーはシンボルを解決できません:「未解決の外部シンボル」、エラー LNK2019。

VisualC++ 2013 Express (MSVC12 だと思います) のコンパイラで Qt 5.3 を使用しています。Qt-creator で使用される .pro ファイルは次のとおりです。

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

LIBS += -L"C:/Users/myuser/myproject" -lsomelib

SOURCES += main.cpp

HEADERS += \
    somelib.h

C:\Users\myuser\myproject次の 2 つのファイルがあると仮定します。

  • libsomelib.lib
  • somelib.h

フラグに何を指定すればよいかわからないので、Linux で行うように、と-lを試しましたが、すべての組み合わせが失敗しました。libsomelib.liblibsomelibsomelib

Qt-creator から MSVC を使用するのはこれが初めてなので (あまり経験がないわけではありません)、qt-creator が発行するリンク コマンドがよくわかりません。これには、知らないマニフェスト ファイルが含まれています。コマンドで明示的にリストされているファイルまたはライブラリはありません。

link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:debug\myproject.exe.embed.manifest /OUT:debug\myproject.exe @C:\Users\myuser\AppData\Local\Temp\myproject.exe.4260.531.jom

qmake を使用せず、 and を使用して手動でこの例をコンパイルするcllink、プログラムは問題なくリンクすることに注意してください。これを実現するために、次のコマンドを使用します。

cl /MT /EHsc /c main.cpp 
link /LIBPATH:C:\Users\myuser\myproject libsomelib.lib main.obj  /out:test.exe

どうすれば修正できますか?前もって感謝します!

4

1 に答える 1

0

どういうわけか、MSVC を使用してコードをコンパイルすることができました。

Qt-Creator でコンパイルを再現しようとしましたが、成功しませんでした。また、Qt アドインを使用して VS から qmake プロジェクトをエクスポートしようとしましたが、qt クリエーターでも問題が解決しません。だから私はあきらめて、VSを使用してコンパイルを続けています。

于 2014-06-06T10:23:02.663 に答える