云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Labwindows调用外部DLL文件的问题

Labwindows调用外部DLL文件的问题

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 7:45:12

Labwindows/CVI调用外部DLL文件的问题 分类: labview/CVI 2012-09-27 16:00 748人阅读 评论(0) 收藏 举报 dllborlandlibrarycbuild 这几天都在琢磨关于调用CVI编写的DLL动态链接库的相关问题,在此对这些问题进行一些总结,希望对大家有一些小小的帮助: 1. dll文件的编写

(1)打开软件Labwindows/CVI,点击File->New->project新建一个工程*.prj,如图所示。然后保存为example.prj。

(2)用同样的方式,新建一个*.c文件,然后按照下图所示,在Edit->Insert Construct->Dllmain,然后软件会自动在c文件中添加以下两个函数:

int __stdcall DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

int __stdcall DllEntryPoint (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

这两个函数是DLL动态链接库必须包含的两个函数,函数的具体内容为:

#include

int __stdcall DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

{

switch (fdwReason)

{

case DLL_PROCESS_ATTACH:

if (InitCVIRTE (hinstDLL, 0, 0) == 0)

return 0;/* out of memory */

break;

case DLL_PROCESS_DETACH:

CloseCVIRTE ();

break;

}

return 1;

}

int __stdcall DllEntryPoint (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

{

/* Included for compatibility with Borland */

return DllMain (hinstDLL, fdwReason, lpvReserved);

}

然后在上面C源文件中编写相关的函数,然后保存文件为example.c。如果需要编写的dll链接库具有现实面板的,则需要在c文件中做一些处理。一般利用Labwindows/CVI编写一个工程文件,在main函数中调用面板,具体代码如下:

#include

#include

#include \

static int panelHandle;

int main (int argc, char *argv[])

{

if (InitCVIRTE (0, argv, 0) == 0)

return -1;/* out of memory */

if ((panelHandle = LoadPanel (0, \

return -1;

DisplayPanel (panelHandle);

RunUserInterface ();

DiscardPanel (panelHandle);

return 0;

}

但是在dll动态库中调用面板时,需要将面板的调用、显示和退出用两个函数来处理。一般用一个函数InitUIForDLL()来调用dll库中的面板*.uir文件。用另一个函数void DiscardUIObjectsForDLL (void)来对调用的面板进行释放。具体代码如下:

int InitUIForDLL (void)

{

//含有界面的DLL调用入口点

if ((panelHandle = LoadPanelEx (0, \

return -1;

//加载用户界面

DisplayPanel (panelHandle);

//如果不加入RunUserInterface函数,界面将一闪而过

RunUserInterface ();

return 0;

}

void DiscardUIObjectsForDLL (void)

{

//释放在InitUIForDLL函数入口点处装载的界面函数

if (panelHandle > 0)

{

DiscardPanel (panelHandle);

panelHandle = 0;

}

}

这样的目的是:在外部调用的时候,便于调用。

c源文件编写完整后,把相关的*.uir文件添加到工程中,然后编写一个*.h文件,命名为exampledll.h,里面包含一个源文件中的函数申明。定义如下:

extern int InitUIForDLL (void);//调用面板的函数

extern void DiscardUIObjectsForDLL (void);//退出面板并释放

extern ……………………//其他一些功能函数。

将example.c,example.h和相关的*.uir文件都添加到example.prj工程中,并保存。

(3)设置dll编译

将所有文件保存在刚刚编写的工程文件中,然后设置dll相关信息。如图所示,按照build->Target Type设置为Dynamic Link Library。

搜索更多关于: Labwindows调用外部DLL文件的问题 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Labwindows/CVI调用外部DLL文件的问题 分类: labview/CVI 2012-09-27 16:00 748人阅读 评论(0) 收藏 举报 dllborlandlibrarycbuild 这几天都在琢磨关于调用CVI编写的DLL动态链接库的相关问题,在此对这些问题进行一些总结,希望对大家有一些小小的帮助: 1. dll文件的编写 (1)打开软件Labwindows/CVI,点击File->New->project新建一个工程*.prj,如图所示。然后保存为example.prj。 (2)用同样的方式,新建一个*.c文件,然后按照下图所示,在Edit->Insert Construct->Dllmain,然后软件会自动在c文件中添加以下两个函数: int __stdcall DllMain (HINSTA

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com