CodeBlocks新建一个Dynamic Link Library工程,工程名称叫做:dll,代码已由向导自己生成好了
这里函数就不写了
编译该工程,Ctrl+F9,完毕,关闭工程
再新建一个Project,名称为cbp,选择Console application,完毕
CodeBlocks比较特殊,如果调用已编译好的dll文件,需要使用到两个头文件windows.h和winbase.h,注意:windows.h一定要声明在winbase.h之前,否则会提示winbase.h中的DWORD未定义
把之前dll.dll生成的头文件包含进去,该头文件中将dll编译的代码设置成以标准C的形式输出,这样比较安全。这里我使用的是#include "\..\temp\dll\main.h"
接下来定义一个函数名为指针的声明,表明这是一个指针来自外部的函数
这里我使用的是typedef void(WINAPI *pfunction)(const LPCSTR sometext);
然后为函数指针声明一个实例,再声明一个句柄,用来存放库文件
不说了直接上代码:
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include "\..\temp\dll\main.h"
typedef void(WINAPI *pfunction)(const LPCSTR sometext);
int main(int argc,char *argv[])
{
pfunction pfu=NULL;
HMODULE hlib=NULL;
hlib=LoadLibrary("dll.dll");
pfu=(pfunction)GetProcAddress(hlib,"SomeFunction");
SomeFunction("DLL调用成功!");
SomeFunction(*argv);
FreeLibrary(hlib);
return 0;
}