1、隐式链接
包含你的DLL导出函数的头文件,链接DLL工程导出的lib库;
这个用起来比较方便,缺点是DLL不存在的话,应用无法启动。
2、显示链接
通过LoadLibrary加载你的DLL,GetProcAddress获取函数指针并调用。
这个的好处是DLL会在你需要的时候才加载,不用不加载。
2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。 4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。 5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。二、在代码引用需要的dll#using #using "DownloaFiles.dll" //换成需要的dll文件using namespace Systemusing namespace CGistarMath//换成dll中类所使用的namespace三、在dll函数调用代码前加入#pragma managed这是manage和unmanage混合编程在MFC下的一种实现方式。 以下是我自己碰到的问题的总结: 当我在声明一个变量的时候,是在.H文件的类里面声明: CGistarMath^ CSPro但是编译的时候会出现这个错误:error C3265: 无法声明托管“CSPro”(在非托管“CMathCPPDlg”中) 不能声明全局或静态变量,也不能声明引用 gc 堆中对象的本机类型成员因此,我只能讲CGistarMath^ CSPro修改成 CGistarMath^ CSPro = gcnew CGistarMath()并且放入函数的实现当中,才将该问题解决,但是有个缺点就是需要使用到该DLL的函数都要自己生面一个对象,比较麻烦,也容易造成资源浪费,因此不只你们有没有其他好的办法呢??欢迎分享,转载请注明来源:内存溢出
评论列表(0条)