您的当前位置:首页正文

CVI生成动态连接库(DLL)步骤简介

2023-09-06 来源:我们爱旅游
CVI生成动态连接库(DLL)步骤简介

本文假设需要创建动态连接库(以下简称DLL)的代码已经编辑完成。

首次,创建一个单独的.C文件,名字任意,我在这里称为dll.c。在代码编辑窗口中选择菜单项【Edit】/【Insert Contruct】/【Dll Main】,生成两个函数:DllMain和DllEntryPoint。

#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); }

然后,选择菜单项【Build】/【Target Type】/【Dynamic Link Library】。 接下来,选择菜单项【Build】/【Target Settings】: Dll file : release;

点击Change:选择Include files and Marked Symbols; 其他保持默认值就可以了。

配置好设置以后,我们就可以生成DLL文件了。按快捷键【Ctrl+M】,如果运行成功,就会出现一下类似对话框:

我们生成里.dll文件,就是我们需要的。在应用程序调用中,我们还需要的就是你所使用的所有的.h头文件。

接下来,讲述一下如何调用.dll文件,以及使用全局变量需要注意的地方。 首先,将.dll和头文件复制到应用程序的工程目录;

然后,打开应用程序的工程(.cws)。编译一个上述头文件的头文件(即将上述的头文件用一个头文件包含,我们称其为test_lib.h),将test_lib.h加入到应用程序的工程中。

接下来,双击test_lib.h后,选择菜单项【Option】/【generate Dll import library】,如下图所示,

点击以后,将生成一个.lib文件(我们称其为test.lib)。将test.lib文件加入到工程中。这样,我们就可以成功使用DLL文件了。

注意:刚才我们生成dll文件的同时也生成里一个.lib 文件,那个文件跟这个文件是一样的,都是动态连接库的导入库。我们之所以这样麻烦的再生成,目的是在只提供dll和头文件的情况下,让大家知道怎样来生成lib文件。

最后,我还要说明一下在CVI中如何使用dll文件中的全局变量。我们需要使用两个关键词__export 和__declspec(dllimport):

__export声明的全局变量,不管初始化多少,应用程序都是0;而__declspec(dllimport)则可以保持全局变量的初始化值。

需要注意的一点是,这两个全局变量的关键词用在应用程序的头文件中,而不是dll的头文件中,也就是说,如果你的应用程序想使用dll的全局变量,只需要在应用程序对应的dll头文件中的全局变量前加上这两个关键词的其中一个就可以了。

到此为止,我们讲述了如何产生动态连接库以及如何使用,还提及了一些全局变量的注意事项,希望对大家有所帮助,谢谢。

因篇幅问题不能全部显示,请点此查看更多更全内容