QtCreator(vs2015库)编译动态库,无法解析的外部符号问题

1. 首先使用matlab生成的c语言源码,用QtCreator 5.11 (vs2015) 编译成64位的release静态库。

编译成功。

2. 使用1.中编译的静态库,调用其函数,再用QtCreator 5.11 (vs2015) 编译成64位release动态库。

编译失败,很多库函数无法解析。错误如下(下面几行摘要,之后附图):

libcalibration.obj:-1: error: LNK2001: 无法解析的外部符号 __GSHandlerCheck

libfit_4params.lib(fit_4params.obj):-1: error: LNK2001: 无法解析的外部符号 __GSHandlerCheck

libfit_4params.lib(fit_4params_emxAPI.obj):-1: error: LNK2019: 无法解析的外部符号 __imp_calloc,该符号在函数 emxCreateND_real_T 中被引用

3. 解决方式是,先编译Debug版本的,再回来编译release版本的就可以了,具体原因不知道,为啥这样就编译成功也不知道。欢迎留言说明,共同学习。(基本上就Debug能编译成功,release编译失败)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux中,Qt Creator是一个强大的集成开发环境,用于开发跨平台的应用程序。在使用Qt Creator创建和调用动态库时,需要经过以下几个步骤: 1. 首先,在Qt Creator中新建一个工程。选择“Dynamic Library”作为项目类型。 2. 在工程文件中,定义需要暴露给其他程序使用的函数和类。可以在.h头文件中声明函数和类的接口,并在.cpp源文件中实现相应的功能。 3. 编译生成动态库文件。在Qt Creator中,可以点击“构建”按钮编译和链接生成动态库文件。生成的动态库文件一般以.so(shared object)为扩展名。 4. 创建一个新的可执行程序项目,并引用动态库。在新的项目中,需要在.pro文件中添加对动态库的依赖关系。例如,可以使用LIBS += -L/path/to/library -lmylibrary来指定动态库的路径和名称。 5. 在可执行程序中调用动态库中的函数或类。在主函数或其他需要使用动态库的地方,可以直接调用动态库中定义的函数或类,实现相应的功能。 值得注意的是,动态库的调用中还需要注意以下几点: 1. 在调用动态库函数时,需要先加载动态库。可以使用dlopen函数加载动态库文件,并使用dlsym函数获取需要调用的函数指针。 2. 调用动态库中的函数时,需要根据函数的参数类型进行适当的类型转换。因为动态库函数的参数类型可能与调用者的类型不完全匹配。 3. 在完成动态库的使用后,需要使用dlclose函数关闭对动态库引用,释放相关资源。 总结来说,使用Qt Creator在Linux中创建和调用动态库需要进行项目的设置、编译生成动态库文件,然后在其他项目中引用动态库并调用其中定义的函数或类。同时,还需要注意动态库的加载和关闭过程,以确保正确使用动态库功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值