小白求教!Qt designer & VS2017 如何链接PCANBasic.dll

2019-03-06 04:13:17
头文件是自己写还是可以直接把
// PCANBasic.h
//
// ~~~~~~~~~~~~
//
// PCAN-Basic API
//
// ~~~~~~~~~~~~
//
// ------------------------------------------------------------------
// Author : Keneth Wagner
// Last change: 13.11.2017 Wagner
//
// Language: ANSI-C
// ------------------------------------------------------------------
//
// Copyright (C) 1999-2017 PEAK-System Technik GmbH, Darmstadt
// more Info at http://www.peak-system.com
//
复制到自己的项目目录下,各种与dll文件里对应的函数我也不知道有哪些,各个头文件源文件里写些啥啊
...全文
599 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
2019-03-11
  • 打赏
  • 举报
回复
多谢。库文件发不了现在在试LoadLibrary
五里之南 2019-03-08
  • 打赏
  • 举报
回复
我在网上没有找到你这个库,所以没办法做实际的测试,如果可以的话你可以发我一下,我看一下具体的情况。你加载了库之后,一般库会有导出的类,或者导出的函数,你参考别人的加载库的时候,会发现有调用QLibrary的.resolve()方法,Qt的帮助文档是这样表述这个方法的,感觉写的思路很清晰,在导出库的时候需要怎么操作: QFunctionPointer QLibrary::resolve(const char *symbol) Returns the address of the exported symbol symbol. The library is loaded if necessary. The function returns 0 if the symbol could not be resolved or if the library could not be loaded. Example: typedef int (*AvgFunction)(int, int); AvgFunction avg = (AvgFunction) library->resolve("avg"); if (avg) return avg(5, 8); else return -1; The symbol must be exported as a C function from the library. This means that the function must be wrapped in an extern "C" if the library is compiled with a C++ compiler. On Windows you must also explicitly export the function from the DLL using the __declspec(dllexport) compiler directive, for example: extern "C" MY_EXPORT int avg(int a, int b) { return (a + b) / 2; } with MY_EXPORT defined as #ifdef Q_OS_WIN #define MY_EXPORT __declspec(dllexport) #else #define MY_EXPORT #endif Qt可以通过信号和槽的方式来连接,在导出类的声明中没有信号的声明,只能使用connect(...,SIGNAL(),...,SLOT());这种方式,不能使用lamba表达式,开始我就是使用lamba表达式,导致怎么编译都不通过。
2019-03-07
  • 打赏
  • 举报
回复
引用 3 楼 sinan1995 的回复:
你可以看下别人写的怎么使用QLibrary的使用方法,自己写一个库,然后去加载自己写的库,就对流程比较清晰了。

https://blog.csdn.net/u011012932/article/details/77372826

允许目录是指你的运行程序的目录,win下是你写的程序生成的.exe程序的同级目录。

感谢!我今天完成了创建和加载自己的dll,但还是不知道我想使用的PCANBasic.dll里的函数在VS2017 & Qt designer 生成的mainwindow.h 和 mainwindow.cpp里如何声明及实现,MFC是用消息映射,Qt就是信号与槽把界面与usb相连吗?目前是把PCANBasic.h,PCANBasicClass.h,PCANBasicClass.cpp,添加到了我的项目里,这样行得通吗
五里之南 2019-03-07
  • 打赏
  • 举报
回复
你可以看下别人写的怎么使用QLibrary的使用方法,自己写一个库,然后去加载自己写的库,就对流程比较清晰了。 https://blog.csdn.net/u011012932/article/details/77372826 允许目录是指你的运行程序的目录,win下是你写的程序生成的.exe程序的同级目录。
2019-03-06
  • 打赏
  • 举报
回复
允许目录是什么意思,我需要用QLibrary lib("PCANBasic.dll");来加载,怎么才能知道dll文件里都是哪些函数呢
Marcelxx 2019-03-06
  • 打赏
  • 举报
回复
1,隐式加载DLL:需要头文件,lib文件和dll文件。dll文件放到程序的允许目录。然后包含头文件和lib文件,编译运行即可。
2,显示加载dll:这种更麻烦,不可取,需要手动获取导出函数。更加麻烦。

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧