Labwindows调用外部DLL文件的问题.doc

Labwindows调用外部DLL文件的问题.doc

ID:62033720

大小:179.00 KB

页数:6页

时间:2021-04-15

Labwindows调用外部DLL文件的问题.doc_第1页
Labwindows调用外部DLL文件的问题.doc_第2页
Labwindows调用外部DLL文件的问题.doc_第3页
Labwindows调用外部DLL文件的问题.doc_第4页
Labwindows调用外部DLL文件的问题.doc_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。