欢迎来到天天文库
浏览记录
ID:62033720
大小:179.00 KB
页数:6页
时间:2021-04-15
《Labwindows调用外部DLL文件的问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Labwindows/CVI调用外部DLL文件的问题分类: labview/CVI2012-09-2716:00 748人阅读 评论(0) 收藏举报dllborlandlibrarycbuild这几天都在琢磨关于调用CVI编写的DLL动态链接库的相关问题,在此对这些问题进行一些总结,希望对大家有一些小小的帮助:1.dll文件的编写 (1)打开软件Labwindows/CVI,点击File—〉New—〉project新建一个工程*.prj,如图所示。然后保存为example.prj.(2)用同样的方式,
2、新建一个*.c文件,然后按照下图所示,在Edit->InsertConstruct—〉Dllmain,然后软件会自动在c文件中添加以下两个函数:int__stdcallDllMain(HINSTANCEhinstDLL, DWORDfdwReason,LPVOIDlpvReserved)int __stdcallDllEntryPoint (HINSTANCEhinstDLL,DWORDfdwReason,LPVOIDlpvReserved)这两个函数是DLL动态链接库必须包含的两个函数,函数的具体内
3、容为:#include int __stdcallDllMain(HINSTANCEhinstDLL,DWORDfdwReason,LPVOIDlpvReserved){switch(fdwReason){caseDLL_PROCESS_ATTACH: if (InitCVIRTE(hinstDLL,0,0)==0) return 0;/*outofmemory*/ break;caseDLL_PROCESS_DETACH:
4、 CloseCVIRTE();break;}return1;}int __stdcall DllEntryPoint(HINSTANCEhinstDLL,DWORDfdwReason, LPVOIDlpvReserved){/*IncludedforcompatibilitywithBorland*/returnDllMain(hinstDLL,fdwReason,lpvReserved);}然后在上面C源文件中编写相关的函数,然后保存文件为example。c。如果需要编写的dll链接
5、库具有现实面板的,则需要在c文件中做一些处理.一般利用Labwindows/CVI编写一个工程文件,在main函数中调用面板,具体代码如下:#include#include#include”CFI.h"staticintpanelHandle;intmain(intargc,char *argv[]){if(InitCVIRTE(0, argv,0)== 0)return—1;/*outofmemory*/if((panelHandle= LoadPanel(0, ”CFI。uir”, PANEL))
6、<0)return -1;DisplayPanel (panelHandle);RunUserInterface();DiscardPanel(panelHandle);return0;}但是在dll动态库中调用面板时,需要将面板的调用、显示和退出用两个函数来处理。一般用一个函数InitUIForDLL()来调用dll库中的面板*。uir文件。用另一个函数void DiscardUIObjectsForDLL(void)来对调用的面板进行释放。具体代码如下:int InitUIForDLL(void)
7、{//含有界面的DLL调用入口点if((panelHandle =LoadPanelEx (0,"dll.uir", PANEL, __CVIUserHInst))<0)return-1;//加载用户界面DisplayPanel (panelHandle);//如果不加入RunUserInterface函数,界面将一闪而过RunUserInterface();return0;}voidDiscardUIObjectsForDLL(void){//释放在InitUIForDLL函数入口点处装载的界面函数
8、if(panelHandle>0){DiscardPanel(panelHandle);panelHandle =0;}}这样的目的是:在外部调用的时候,便于调用。 c源文件编写完整后,把相关的*.uir文件添加到工程中,然后编写一个*.h文件,命名为exampledll.h,里面包含一个源文件中的函数申明。定义如下: externintInitUIForDLL (void);//调用面板的函数 externvoid DiscardUIO
此文档下载收益归作者所有