(2)MyDll.h的内容如下:
以下是引用片段:
extern "C" _declspec(dllexport) int sum(int a,int b)//本文所有的例子只有一个sum即加法函数。
(3)MyDll.cpp的内容如下:
以下是引用片段:
#include "stdafx.h"
#include "windows.h"
#include "MyDll.h"
BOOL APIENTRY DllMain(
HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE
}
extern "C" _declspec(dllexport)int sum(int a, int b)
{
return a+b
}
(4)编译之后产生了MyDll.lib与MyDll.dll两个文件。
VC编写dll文件
1、VC++->New->Project->Win32 Dynamic_Link Library
2、选择创建一个空工程
首先DLL需要一个头文件,所以新建一个C\C++ Header File
这个头文件中必须包含想要输出的变量和函数,头文件必须定义用于输出的任何符号和数据结构。
例如 :
这里边又一个预定义
#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
为什么要加这一句呢?
因为相同的函数被C++编译后在符号库中的名字与C语言编译后的不同,所以如果使用的是标准C就要告诉编译器,要保留原来的名字,这里用extern “C”来实现。
当然DLL还需要一个源文件,在工程中新建一个 C++Source File
代码如下,此代码 中的宏定义是必须的。
编译以后,会在工程的DEBUG文件夹下生成一个DLL文件。这样DLL文件就创建成功。
下面展示一下如何使用这个DLL。代码如下,这里是显示引用DLL。
运行以后程序就会输出:1+2=3
证明调用动态链接库里的 Add函数成功。
VC++一般人要搞明白,可编程,3年都不多,.dll文件仅仅是一个动态链接库,属于系统文件类型,举例:
在运行时动态链接中,您应使用与以下代码类似的代码来调用 SampleDLL.dll 导出 DLL 函数。 ...typedef VOID (*DLLPROC) (LPTSTR)... HINSTANCE hinstDLLDLLPROC HelloWorldBOOL fFreeDLLhinstDLL = LoadLibrary("sampleDLL.dll")if (hinstDLL != NULL){ HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld")if (HelloWorld != NULL) (HelloWorld)fFreeDLL = FreeLibrary(hinstDLL)}...
不多阐述,要不,你再去复制一个原dll,要不你骂我一顿,只要你舒服,咱们就别学VC,太枯燥!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)