【发布时间】:2014-08-02 04:02:09
【问题描述】:
我正在尝试在我的 Qt 应用程序中使用 Crypto++ 库。
Qt版本是5.3.0 用VS2013编译 在 Windows 8.1 上运行
用VS2013编译的Crypto++ Lib
这是我的 .pro 文件中链接 lib 的部分
win32: LIBS += -L$$PWD/cryptopp562/Win32/DLL_Output/Release/ -lcryptopp
INCLUDEPATH += $$PWD/cryptopp562
DEPENDPATH += $$PWD/cryptopp562
一切似乎都很好。但是我遇到了两个问题。
我无法编译调试版本。我认为这是因为我有 .lib 文件的发布版本
当我尝试编译我的应用程序时,我收到以下错误
crypto.obj:-1: error: LNK2019: unresolved external symbol "class std::basic_string,class std::allocator > const CryptoPP::DEFAULT_CHANNEL" (?DEFAULT_CHANNEL@CryptoPP@@3V?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@std@@B) 在函数“public: virtual bool __thiscall CryptoPP::Unflushable::Flush(bool,int,bool)”中引用 (?Flush @?$Unflushable@VFilter@CryptoPP@@@CryptoPP@@UAE_N_NH0@Z)
我收到两个这样的错误,我认为这是由于两个函数调用了未编译的 lib。
编辑
我的观察:
-
似乎我正在链接到正确的静态库,即 libcrypt.lib,并且我使用了 dumpbin 实用程序来确保错误指定的缺失符号存在于 lib 文件中。
李> -
看来,虽然我在 .pro 文件中指定了一些项目未引用该库的方式。我已在我的 .pro 文件中放入以下行以引用静态库
win32: LIBS += -L$$PWD/cryptopp562/Win32/Output/Release/-lcryptlib
INCLUDEPATH += $$PWD/cryptopp562 DEPENDPATH += $$PWD/cryptopp562
win32:!win32-g++ PRE_TARGETDEPS += $$PWD/cryptopp562/Win32/Output/Release/cryptlib.lib else:win32-g++: PRE_TARGETDEPS += $$PWD/cryptopp562/Win32/Output/Release/libcryptlib.a
我的问题是,
我犯了什么错误?
将 Crypto++ 库链接到 Qt 项目的正确方法是什么。
【问题讨论】:
-
你觉得这个怎么样?
标签: compiler-construction qt5 unresolved-external crypto++