我想从 Leadtools 购买QR码阅读和生成许可证,但是首先,我想尝试他们的演示工具。 我正在使用MSVC 2013 x64编译器。我想我在文档中做了以下所有事情:


 LIBS + = -L $$ PWD / Lib / CDLLVC12 / x64 / -lLtkrn_x
 INCLUDEPATH + = $$ PWD / Include
 PRE_TARGETDEPS + = $$ PWD / Bin / CDLLVC12 / x64 / Ltkrnx.dll
include和#define LTV19_CONFIG,这是我的代码:


 #define LTV19_CONFIG
 #include< iostream>
 #include< Ltkrn .h>
 #include< ClassLib / LtWrappr.h>
使用命名空间std;

 int main(){
 if(LT_KRN == LBase :: LoadLibraries(LT_KRN,LT_DLGKRN))
 cout<< “成功”<< endl;

 L_TCHAR licenseFile [] = L“d:\\ temp \\ TestLic.lic”;
 L_TCHAR key [] = L“xyz123abc”;
 LSettings :: SetLicenseFile(licenseFile,key);

返回0;
}

询问leadtools支持,但他们没有太多使用QT的经验...
当我尝试构建时应用程序我得到以下错误:


 LNK2019:未解析的外部符号“__declspec(dllimport)public:static unsigned int __cdecl LBase :: LoadLibraries(unsigned int,unsigned int )“(__ imp_?LoadLibraries @LBase @@ SAIII @ Z)在函数main&#xA中引用; LNK2019:未解析的外部符号“__declspec(dllimport)public:static int __cdecl LSettings :: SetLicenseFile(wchar_t *,wchar_t *)”(__ imp_?SetLicenseFile @ LSettings @@ SAHPEA_W0 @ Z)在函数main

中引用


 对于以下方法,文档说我只需要一个dll / lib包(ltkrn)。怎么解决?我仍然没有得到静态和动态链接之间的差异,这可能是问题所在。

答案 0 :(得分:0)
如果你的链接器接受了64位Ltkrn_x.lib,这表明问题与你如何使用LEADTOOLS而不是QT有关。这就是为什么我将此作为建议回复而不是留言发布的原因 使用LEADTOOLS和C ++编程时,通常使用2组标题和LIB中的一组:
包括L_Bitmap.H(或包含LtKrn.H的一堆标头)并使用Ltkrn_x,Ltfil_x等LIB文件集。
或者包含ClassLib \ LtWrappr.h并且只使用一个LIB文件,在您的情况下是Ltwvc_x.lib
虽然在这两种情况下你都会使用许多相同的DLL文件,例如Ltfilx.dll和Ltkrnx.dll,但是在使用LtWrapper时你不需要他们的LIB文件的原因是ClassLibrary执行起来很晚(在要求)在运行时加载这些DLL,而不是在链接时引用它们的LIB文件。
这也是为什么你需要在代码使用这些DLL之前调用LBase :: LoadLibraries()并指定所需的DLL的原因。
总而言之,请试试这个:
删除#include" Ltkrn.h"
删除对Ltkrn_x.lib的链接器引用(尽管您需要DLL)
保持#include" ClassLib / LtWrappr.h"
添加链接器引用到Ltwvc_x.lib