在Labwindows/CVI或c语言中如何调用别人写好的dll文件

如何在CVI中使用dll文件,只有dll,没有lib和h文件,请详细回答,万分感谢,这是我写的调用程序,//声明HINSTANCED12dll=NULL;//开始准备导入... 如何在CVI中使用dll文件,只有dll,没有lib和h文件,请详细回答,万分感谢,这是我写的调用程序,
//声明
HINSTANCE D12dll = NULL;//开始准备导入DLL
int (__stdcall *SysInit)(unsigned int *ipbuff, unsigned int socket_num);

//导入DLL函数
void dll_inport(void)
{
if(D12dll == NULL)
D12dll = LoadLibrary("D12dll.dll"); //动态方式调用DLL
if(D12dll)
{
USB_Init = (int (__stdcall *)(unsigned int *ipbuff, unsigned int socket_num))GetProcAddress(D12dll,"SysInit");
// VC DLL采用__stdcall方式输出,而不是__cdecl方式,如果采用__cdecl方式,函数名直接为 "Sys_Init"

}
}
main()
{
int *ip=NUll;
int num=0;

SysInit(ip,num);
}
显示错误:
FATAL RUN-TIME ERROR:Dereference of null pointer
展开
 我来答
veket的小号
2013-08-20 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3992万
展开全部

既然形参已经告诉你 要buffer  你就得给他buffer

(ipbuf 显然是 ipaddress buffer 存放ip地址缓存)  num设置合适大小

请定义 一个unsigned int 数组

请定义 一个unsigned int * 指针 指向数组

 

给你写了个 cvi 调用devcpp C语言写的dll  参数类型和你这 类似

(仅仅是简单的选择法对数组排序l)

 

 

更多追问追答
追问
万分感谢,本人cvi小菜鸟,再问您一下,采集卡说明书中给的指令:
extern "c" DLLexport int _stdcall ConnectDel
(unsigned int socket_num);
其中socket_num为要操作的Scoket在DLL里对应的唯一编码,这个编码怎么看呢,还有该语句是什么意思,直接输入进去老是报错,应该怎么用,
不好意思啊,又麻烦您了
追答
这个就是 dll导出的函数 原型 声明

LoadLibrary 动态方式调用dll 不用管 extern "c" 和 DLLexport神马....

不需要输入
如果是静态调用dll内的函数才需要这个语句 但是是调用是要import导入(这个是dll的导出声明export,调用就要改导入import ,你不需要管这些)

编码 ..... 这个估计是 一个标识号
估计 建立socket时返回的一个编号
猜出 建立1号socket
connectdel就是删除socket
要删除建立的1号socket就ConnectDel(1) ......... 请去多看几遍说明书
tattackor
2015-10-26 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
1、编写程序时,包含(#include "什么.h") dll文件作者提供 的 头文件(.h文件) 。
程序里,便和普通函数调用一样,去调用它的函数。
2、程序编译时,链接 dll文件作者提供 的 (.lib文件) 库文件。当然,可以在源程序里把.lib 名字 写上,编译时自动去链接,例子:#pragma comment (lib, "什么.lib")
3、执行时,要有 .dll 文件. 放在当前文件夹或系统文件夹里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式