如何在PHP中调用自己编写的DLL库中的函数接口
1个回答
展开全部
在 DLL工程中的 cpp中函数定义如下:
extern "C" _declspec (dllexport )
int fun(int a, char b)
{
return a + b;
}
第一种方法 隐式调用:
调用的 DLL的主工程的 文件中代码如下:
// 先把 lib 链接进来
#pragma comment (lib , "..//Debug//FuncDll.lib" )
// 外部声明的 add 函数
extern "C" _declspec (dllimport )
int fun(int a, char b);
int TestDll()
{
// 直接调用 fun函数
printf("%d/n" , fun(5, 2));
return 0;
}
第二种方法 显式调用:
调用的 DLL的主工程的 文件中代码如下:
int TestDLL()
{
HMODULE hModule = NULL;
typedef int (*Func)(int a, int b);
// 动态加载 DLL 文件
hModule = LoadLibrary(_TEXT("..//Debug//FuncDll.dll" ));
// 获取 fun函数地址
Func fAdd = (Func)GetProcAddress(hModule, "fun" );
// 使用函数指针
printf("%d/n" , fAdd(3, 1));
// 释放指针
FreeLibrary(hModule);
return 0;
}
extern "C" _declspec (dllexport )
int fun(int a, char b)
{
return a + b;
}
第一种方法 隐式调用:
调用的 DLL的主工程的 文件中代码如下:
// 先把 lib 链接进来
#pragma comment (lib , "..//Debug//FuncDll.lib" )
// 外部声明的 add 函数
extern "C" _declspec (dllimport )
int fun(int a, char b);
int TestDll()
{
// 直接调用 fun函数
printf("%d/n" , fun(5, 2));
return 0;
}
第二种方法 显式调用:
调用的 DLL的主工程的 文件中代码如下:
int TestDLL()
{
HMODULE hModule = NULL;
typedef int (*Func)(int a, int b);
// 动态加载 DLL 文件
hModule = LoadLibrary(_TEXT("..//Debug//FuncDll.dll" ));
// 获取 fun函数地址
Func fAdd = (Func)GetProcAddress(hModule, "fun" );
// 使用函数指针
printf("%d/n" , fAdd(3, 1));
// 释放指针
FreeLibrary(hModule);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询