VC中dll的生成及使用(本来这几天在QT中用DLL)
2011-09-13 16:36
387 查看
1)首先建一个空的Win32 Dynamic-Link Library,名称为:mydll;
2)在工程中创建两个文件:mydll.h和mydll.cpp。
i)mydll.h中的内容如下:
#ifndef _MYDLL_H
#define _MYDLL_H
extern "C" _declspec(dllexport) int Max(int a, int b);
#endif //_MYDLL_H
ii)mydll.cpp中的内容如下:
#include "mydll.h"
#include <windows.h>
#include <winbase.h>
#include <iostream>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
int Max(int a, int b)
{
if(a>=b)
return a;
else
return b;
}
3)先Compile(Ctrl + F7)并且Build(F7),在Debug文件夹中会生成mydll.lib、mydll.dll等等。
4)为了方便,直接把mydll.h复制到Debug文件夹去,在Debug文件夹中建立一个test.cpp文件内容如下:
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include "mydll.h"
void main()
{
typedef int(*pMax)(int a,int b);
HINSTANCE hDLL=LoadLibrary("MyDll.dll");
pMax MaxHDLL;
pMax Max=(pMax)GetProcAddress(hDLL,"Max");
int A=Max(5,8);
printf("The result is :%d\n",A);
FreeLibrary(hDLL);
}
5)直接Build和Run结果如下:
2)在工程中创建两个文件:mydll.h和mydll.cpp。
i)mydll.h中的内容如下:
#ifndef _MYDLL_H
#define _MYDLL_H
extern "C" _declspec(dllexport) int Max(int a, int b);
#endif //_MYDLL_H
ii)mydll.cpp中的内容如下:
#include "mydll.h"
#include <windows.h>
#include <winbase.h>
#include <iostream>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
int Max(int a, int b)
{
if(a>=b)
return a;
else
return b;
}
3)先Compile(Ctrl + F7)并且Build(F7),在Debug文件夹中会生成mydll.lib、mydll.dll等等。
4)为了方便,直接把mydll.h复制到Debug文件夹去,在Debug文件夹中建立一个test.cpp文件内容如下:
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include "mydll.h"
void main()
{
typedef int(*pMax)(int a,int b);
HINSTANCE hDLL=LoadLibrary("MyDll.dll");
pMax MaxHDLL;
pMax Max=(pMax)GetProcAddress(hDLL,"Max");
int A=Max(5,8);
printf("The result is :%d\n",A);
FreeLibrary(hDLL);
}
5)直接Build和Run结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/728098a5eec69370296d3ae63ef2b5d6.gif)
相关文章推荐
- VC++生成DLL,Qt中使用DLL
- VC2005编译SQLite,生成WINCE上使用的DLL和Lib
- 使用QT+MinGW编写动态库dll供VC或VB调用
- VC2005编译SQLite,生成WINCE上使用的DLL和Lib
- 关于使用vc++调用matlab生成的dll传递数组的问题
- VC2005编译SQLite 生成WINCE上使用的DLL和Lib
- VC生成的DLL给QT的EXE调用时lib路径问题小结
- VC 生成Dll 并使用
- 关于使用vc++调用matlab生成的dll传递数组的问题
- BCB下使用的VC生成的DLL
- 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)
- 让vc编译的zlib生成的dll在BCB以静态链接的方式使用
- MFC和Qt分别使用Qt生成的Dll。
- VC2005编译SQLite,生成WINCE上使用的DLL和Lib
- 查看VC++生成的dll的方法或函数名[dumpbin使用方法]
- VC2005编译SQLite,生成WINCE上使用的DLL和Lib
- VC2008如何生成及使用DLL(完整版)
- Qt关于dll的生成和使用(Qt C++ li…
- 让VC2012生成的程序支持XP系统(QT的DLL都是支持XP的,只与EXE有关)
- Qt关于dll的生成和使用(Qt C++ li…