VC调用DLL问题
在VC里编译成功了一个DLL,怎么在另一个程序里调用它. 问题点数:20、回复次数:9Top
1 楼chunhai12(小海)回复于 2005-04-03 23:45:57 得分 3
HMODULE LoadLibrary(
LPCTSTR lpFileName // file name of module
);
例如
HINSTANCE hLibrary;
hLibrary=LoadLibrary("mydll.dll");
//……
FreeLibrary(hLibrary);Top
2 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2005-04-04 08:11:21 得分 2
加入Lib和头文件, 把DLL放在EXE的目录。Top
3 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-04 09:07:39 得分 5
下面通过例子介绍如何在动态链接库中定义函数、资源、和类以及如何在工程中使用动态链接库中已定义的函数、资源、
类。
一、 函数的定义和使用方法:
第一步:
运行AppWizard,定义项目名为mydll,选择MFC AppWizard(dll),而不是MFC AppWizards(exe)。
第二步:
在这个例子中,只有一个AppWizard屏幕出现,选择MFC扩展DLL(MFC Extension DLL (using shared MFC DLL),点击
FINISH生成工程。
第三步:
点击File中的New,选择C/C++ Header File,File Name中输入dll,点击OK,创建dll.h。输入extern "C" __declspec(dllexport)
int fun(int x1,int x2,int x3); ,保存。
第四步:
点击File中的New,选择C++ Source File,File Name中输入dll,点击OK,创建dll.cpp。输入
#include "stdafx.h"
#include "dll.h"
extern "C" __declspec(dllexport) int fun(int x1,int x2,int x3)
{
return x1+x2+x3;
}
编译生成mydll.dll和mydll.lib。
第五步:
选择Project 中Add To Project 中的New , 重新生成一个工程,选择MFC AppWizards(exe),项目名为mydlltest , 选择Single
Document ,点击FINISH,生成一个新的工程。选择菜单中的Project àSet Active Project àmydlltest ,将mydlltest设为当前活动工程
。
第六步:
拷贝…\mydll\debug\mydll.dll 到 ..\mydlltest\debug\下,拷贝…\mydll\debug\mydll.lib到…\mydlltest\目录下。
第七步:
在mydlltestView.cpp中的#endif下添加
extern "C" __declspec(dllimport) int fun(int x1,int x2,int x3);
在void CMydlltestView::OnDraw(CDC* pDC)中添加代码如下:
void CMydlltestView::OnDraw(CDC* pDC)
{
CMydlltestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int x=fun(1,2,3);
CString str;
str.Format("%d",str);
pDC->TextOut(10,10,x);
}
第八步:
在WorkSpace中的mydlltest files上点击右键,选择Add files to Project ,将mydll.dll添加到工程。
好了,我们的工作做完了,运行一下看看吧!
Top
4 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 10:41:22 得分 2
包含h和dll到project
然后LoadLibrary加载dll文件,GetProcAddress获得函数地址,调用函数Top
5 楼hxblvc(还是好好学吧...)回复于 2005-04-04 11:00:32 得分 2
6 楼liuduofu(天上不下雨,地上也不干!)回复于 2005-04-04 12:52:37 得分 2
如果已经生成了一个dll,那么直接在工程里的:Project下的settings里的Link下加入dll的*.lib.注意了,把动态库拷进你的工程目录下呀
Top
7 楼hardeggwang(硬蛋)回复于 2005-04-04 14:34:45 得分 2
如果要是在vb下生成的Activex dll该怎么调用?Top
8 楼xxqqzz(田野春风)回复于 2005-04-04 17:13:34 得分 1
我只作过在dephi中调用C++的dllTop
9 楼wuyupu(wuyupu)回复于 2005-04-04 22:52:57 得分 1
loadlibrary 具体的可以看CSDNTop




