你用VC或BC实际实践一个DLL项目就明白了!--
说白了,DLL,就是一个或一堆可调用的普通函数的集合;----使用时加个头文件将其包含进去,就像加<stdio。h>或加<windows.h>一样,道理是一样的----特别之处在于:DLL的目标代码和调用该DLL中函数的目标代码是分开的!这个,一定要清楚。
1)如果是你的vi在打开的时候或者打开LabVIEW的时候出现这个问题,应该是缺少这个.dll文件所致。建议在另一台安装有相同版本的LabVIEW的电脑上,找到LabVIEW的安装目录,如安装在D盘的Program Files下,且版本为8.6,则路径为D:\Program Files\National Instruments\Shared\LabVIEW Run-Time\8.6
该文件夹下有lvanlys.dll,把这个文件通过U盘拷入到缺失该文件的电脑的相同位置,重启LabVIEW再试试;
2)如果是你打包的exe文件在打开的时候出现上面这个问题,应该是你打包的时候有问题,可以重新打包,或者在其他电脑上重新打包;或者,把上面那个文件直接拷贝到你打包生成的应用程序目录中的data文件夹下;
这个好像不行啊,最少你需要知道类或函数的声明啊。无论dll中导出函数或是类。
也无论你是使用隐式调用或是显示调用dll中的函数,你都需要先知道函数声明,否则一切都是无用的。只不过是函数声明由dll工程移到了调用这个dll的工程。
你说对不对。
如果要显示调用dll中导出的类,可以通过如下方法实现。
DLL中:
class A//此类不用导出。
{
...
}
A* create_instance()//应该定义为导出函数。
{
return new A()
}
//调用DLL的工程
A* (*ptrAInst)()
loadlibrary(...)//具体函数参见不同 *** 作系统的编程手册
ptrAInst = getprocaddress(“create_instance”)//具体函数参见不同 *** 作系统的编程手册
...//处理某些工作
freelibrary(...)//工作处理完后释放,具体函数参见不同 *** 作系统的编程手册
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)