1

Qt Creator (creator 2.5.2 + SDK 4.8.2 VS2008 コンパイラでソースからコンパイル) でPantheios (バージョン 1.0.1-beta210) ロガーを使用するプロジェクトをVS2008 C++ コンパイラでコンパイルできません。しかし、Visual Studio 2008 で動作します。

  1. まず、VSコマンドラインとnmakeをパスで使用する必要があるため、Pantheiosライブラリをコンパイルしましたpantheios_path\build\vc9\

  2. 次に、VS2008 と Qt アドインを使用して簡単な Qt プログラムを作成しましたが、問題なく動作します。

    #include <pantheios/pantheios.hpp>
    #include <pantheios/inserters/args.hpp>
    #include <pantheios/backends/bec.WindowsConsole.h>
    
    #include <pantheios/implicit_link/core.h>
    #include <pantheios/implicit_link/fe.simple.h>
    #include <pantheios/implicit_link/be.WindowsConsole.h>
    
    #include <QApplication>
    #include "MainWindow.h"
    
    extern "C" const char PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("play.with.logger");
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
    
        pantheios::log(pantheios::debug, "debug processing condition");
    
        return a.exec();
    }
    
  3. しかし、それを Qt Creator プロジェクトにエクスポートすると、エラーとリンクしたくありません:

    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegCloseKey@4 referenced in function _pantheios_util_onBailOut_canUseWarnMessage_x_
    pantheios.1.util.vc9.dll.debug.lib(util.time.dll.debug.obj) : error LNK2001: unresolved external symbol __imp__RegCloseKey@4
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegQueryValueExA@24 referenced in function _pantheios_util_onBailOut_canUseWarnMessage_x_
    pantheios.1.util.vc9.dll.debug.lib(util.time.dll.debug.obj) : error LNK2001: unresolved external symbol __imp__RegQueryValueExA@24
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegOpenKeyA@12 referenced in function _pantheios_util_onBailOut_canUseWarnMessage_x_
    pantheios.1.util.vc9.dll.debug.lib(util.time.dll.debug.obj) : error LNK2001: unresolved external symbol __imp__RegOpenKeyA@12
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__DeregisterEventSource@4 referenced in function _pantheios_onBailOut3
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__ReportEventA@36 referenced in function _pantheios_onBailOut3
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegisterEventSourceA@8 referenced in function _pantheios_onBailOut3
    debug\Logging3.exe : fatal error LNK1120: 6 unresolved externals
    

    ちなみに、project.pro私が設定したファイルでは:

    ...
        INCLUDEPATH += $(STLSOFT)/include \
                   $(PANTHEIOS_ROOT)/include
    
        LIBS += -L$(PANTHEIOS_ROOT)/lib
    ...
    
  4. また、次の方法で LIBS 変数を変更しようとしました。

    LIBS += d:\workspaces\VS\pantheios-1.0.1-beta210_32\lib\pantheios.1.util.vc9.dll.debug.lib \
        d:\workspaces\VS\pantheios-1.0.1-beta210_32\lib\pantheios.1.core.vc9.dll.debug.lib \
        d:\workspaces\VS\pantheios-1.0.1-beta210_32\lib\pantheios.1.fe.simple.vc9.dll.debug.lib \
        d:\workspaces\VS\pantheios-1.0.1-beta210_32\lib\pantheios.1.bec.WindowsConsole.vc9.dll.debug.lib \
        d:\workspaces\VS\pantheios-1.0.1-beta210_32\lib\pantheios.1.be.WindowsConsole.vc9.dll.debug.lib
    

    そして、これを取得します:

    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegCloseKey@4 referenced in function _pantheios_util_onBailOut_canUseWarnMessage_x_
    pantheios.1.util.vc9.dll.debug.lib(util.time.dll.debug.obj) : error LNK2001: unresolved external symbol __imp__RegCloseKey@4
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegQueryValueExA@24 referenced in function _pantheios_util_onBailOut_canUseWarnMessage_x_
    pantheios.1.util.vc9.dll.debug.lib(util.time.dll.debug.obj) : error LNK2001: unresolved external symbol __imp__RegQueryValueExA@24
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegOpenKeyA@12 referenced in function _pantheios_util_onBailOut_canUseWarnMessage_x_
    pantheios.1.util.vc9.dll.debug.lib(util.time.dll.debug.obj) : error LNK2001: unresolved external symbol __imp__RegOpenKeyA@12
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__DeregisterEventSource@4 referenced in function _pantheios_onBailOut3
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__ReportEventA@36 referenced in function _pantheios_onBailOut3
    pantheios.1.util.vc9.dll.debug.lib(util.bailout.dll.debug.obj) : error LNK2019: unresolved external symbol __imp__RegisterEventSourceA@8 referenced in function _pantheios_onBailOut3
    debug\Logging3.exe : fatal error LNK1120: 6 unresolved externals
    

また、次のさまざまな組み合わせを試しました。

LIBS += -L$(PANTHEIOS_ROOT)/lib -llibname_without_extension

誰でも私に役立つアドバイスをもらえますか?たぶん誰かが Qt Creator の下で Pantheios を使用しています...

4

1 に答える 1

0

MSDNで関数を検索してください。そうすれば、見逃したライブラリを見つけることができます。たとえば、シンボル「_ imp _RegCloseKey @ 4」に対して、MSDNで「RegCloseKey」を検索すると、「Advapi32.lib」が欠落していることがわかります。次に、このライブラリを.proファイルに追加します。

LIBS += -lAdvapi32
于 2012-09-14T01:17:12.847 に答える