当前位置: 代码迷 >> VC >> C++.Net 下加载dll解决方案
  详细解决方案

C++.Net 下加载dll解决方案

热度:8607   发布时间:2013-02-25 00:00:00.0
C++.Net 下加载dll
我制作了一个dll文件,不知道如何加载到C++.Net窗体开发环境下。
#using <myDLL.dll> 
在项目属性中选择 通用属性,再选择添加新引用,根据路径找到我的myDLL.dll。此时点击
“添加新引用”,弹出错误:未能添加对文件 C:\User\zhang\myDLL.dll的引用,因为它不是.Net程序集或已注册的ActiveX

请问如何在C++.net下添加dll,能不能像C#添加dll一样简单?真不希望是vc6.0 的方式添加引用,太麻烦啦。

------解决方案--------------------------------------------------------
c++下直接LoadLibrary("*.dll"),用完FreeLibrary()即可。
------解决方案--------------------------------------------------------
顶楼上的。就是动态调用啦。GetProcAddress(HINSTANCE hInstance,字符串)
------解决方案--------------------------------------------------------
http://support.microsoft.com/kb/815065/zh-cn/
------解决方案--------------------------------------------------------
有动态加载和静态加载,如果是自己写的DLL,用静太加载比较方便
------解决方案--------------------------------------------------------
加载的方法跟vc6.0一样,别的方法我就不知道了。。。
------解决方案--------------------------------------------------------
如提示:因为它不是.Net程序集或已注册的ActiveX,所以不能直接添加引用。
方法如前面几楼所说,下面是动态调用的例子:
//动态调用avicap32.DLL中的capCreateCaptureWindow方法
hDllInst = LoadLibrary(L"avicap32.DLL"); //加载动态链接库
if(hDllInst)
{
typedef DWORD (WINAPI *MyFun)(DWORD,DWORD);
MyFun capCreateCapture = NULL; //capCreateCaptureWindowA Alias 函数别名
capCreateCapture = (MyFun)GetProcAddress(hDllInstall,"capCreateCaptureWindowA"); //capCreateCaptureWindowA 在DLL中声明的函数名
if(capCreateCapture)
{
hWindow = capCreateCaptureWindowA((char *)lpszWinName, WS_CHILD | WS_VISIBLE, Left, Top, Width, Height, ControlPtr, 0);
......
  相关解决方案