首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GenTL.h时出现问题:在GenIcam包中找不到相应的库

使用GenTL.h时出现问题:在GenIcam包中找不到相应的库
EN

Stack Overflow用户
提问于 2020-03-06 23:33:16
回答 1查看 480关注 0票数 0

我正在开发一个允许与GenICam兼容的工业摄像头进行通信的C++控制台应用程序。我安装了latest GenICam package并将其集成到我的项目中。首先,我收到错误信息C1083:无法打开"GenTL.h",所以我将这个头文件移动到include文件夹,并意识到没有相应的二进制文件。现在我得到以下错误消息:

LNK2001未解析的外部符号"__imp_GCInitLib“。

我不知道该怎么解决它。我想我需要集成更多的*.lib,但我在包中找不到。我是不是遗漏了什么?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-05-03 02:00:15

GenICam,或者更确切地说,GenAPI只处理实现GenICam的相机功能的枚举、统一(在不同的供应商之间)、呈现。

另一方面,GenTL抽象了传输接口,并为用户提供了一组标准化的功能。

因此,如果您想使用摄像机功能(GenAPI),首先需要使用传输层实现来扫描摄像机并与其通信。

作为标准的一部分,意味着传输层(GenTL)至少公开了GenTL.h中列出的函数,但通常还有更多。此外,正如您正确说明的那样,GenTL提供者通常是由制造商提供的共享库,通常带有.cti后缀。

可以动态加载这些函数,然后使用这些函数。下面是一个使用Basler GenTL提供程序的示例:

代码语言:javascript
复制
#include <GenTL.h>
#include <dlfcn.h>
#include <dirent.h>


int main(){

    // Load DLL at runtime
    void *lib = dlopen("/opt/pylon/lib/pylonCXP/bin/ProducerCXP.cti", RTLD_NOW | RTLD_DEEPBIND);

    // Declare variables with variable definitions from GenTL.h
    GenTL::PGCInitLib GCInitLib;
    GenTL::PGCCloseLib GCCloseLib;

    // Dynamically bind GenTL functions to local function calls
    *reinterpret_cast<void**>(&GCInitLib) = dlsym(lib, "GCInitLib");
    *reinterpret_cast<void**>(&GCCloseLib) = dlsym(lib, "GCCloseLib");      

    GCInitLib(); // Init GenTL provider

    // [Discover cameras, open port, load GenICam, do things]

    GCCloseLib();
}

然后可以用以下命令编译

代码语言:javascript
复制
g++ -l ldl main.cpp -o TestGenTL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60567206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档