QR使用LeadTools在QT创建者下读取和生成

Qr read and generation under QT creator using leadtools

本文关键字:读取 创建者 使用 LeadTools QT QR      更新时间:2023-10-16

我想购买用于从LeadTools读取和生成的QR码的许可证,但首先我想尝试他们的演示工具。我正在使用MSVC 2013 x64编译器。我想我按照文档中的所有操作:

  1. 将所有DLL复制到我的项目目录(位于构建文件夹的位置)
  2. 复制的包含和LIB文件夹到我的项目目录中,并将此行添加到.pro文件中。

LIBS += -L$$PWD/Lib/CDLLVC12/x64/ -lLtkrn_x INCLUDEPATH += $$PWD/Include PRE_TARGETDEPS += $$PWD/Bin/CDLLVC12/x64/Ltkrnx.dll

  1. include和#define ltv19_config,这是我的代码:

    #define LTV19_CONFIG
    #include <iostream>
    #include <Ltkrn.h>
    #include <ClassLib/LtWrappr.h>
    using namespace std;
    int main( ){
    if( LT_KRN == LBase::LoadLibraries( LT_KRN, LT_DLGKRN))
        cout << "success" << endl;
    L_TCHAR licenseFile[] = L"d:\temp\TestLic.lic";
    L_TCHAR key[] = L"xyz123abc";
    LSettings::SetLicenseFile( licenseFile, key);
    return 0;
    }
    
  2. 询问LeadTools的支持,但他们在与QT合作的经验不多...

当我尝试构建应用程序时,我会出现以下错误:

    LNK2019: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl LBase::LoadLibraries(unsigned int,unsigned int)" (__imp_?LoadLibraries@LBase@@SAIII@Z) referenced in function main
    LNK2019: unresolved external symbol "__declspec(dllimport) public: static int __cdecl LSettings::SetLicenseFile(wchar_t *,wchar_t *)" (__imp_?SetLicenseFile@LSettings@@SAHPEA_W0@Z) referenced in function main

对于以下方法,文档说我只需要一个DLL/LIB软件包(LTKRN)。如何修复它?我仍然没有静态和动态链接之间的差异,这可能是问题所在。

如果您的链接器接受了64位ltkrn_x.lib,这表明问题与您使用LeadTools的使用方式有关,而不是与QT有关。这就是为什么我按建议的答复而不是注释。
在使用C 的LeadTools编程时,通常使用两组标题和LIBS之一:

  1. 包括l_bitmap.h(或包括LTKRN.H在内的一堆标头),并使用ltkrn_x,ltfil_x等。

  2. 或包括classLib ltwrappr.h并仅使用一个lib文件,在您的情况下是ltwvc_x.lib

尽管在这两种情况下,您都会使用许多相同的DLL文件,例如ltfilx.dll和ltkrnx.dll,使用ltwrapper时不需要他们的lib文件的原因是,classLibrary the classLibrary late termation(按需)在运行时加载这些DLL,而不是在链接时间引用其LIB文件。

这也是为什么您需要调用lbase :: loadLibraries()并在代码使用这些dll之前指定所需的dll。
因此,总而言之,请尝试以下操作:

  • 删除#include" ltkrn.h"

  • 删除链接器引用到ltkrn_x.lib(尽管您需要DLL)

  • 保持#include" classlib/ltwrappr.h"

  • 将链接器引用到ltwvc_x.lib