C++ 在C+中使用DLL+;项目
有一个包含文档的DLL库,但没有头文件。在C++程序中有没有使用库函数的简单方法?如何使用代码块引用DLL?提前感谢。以下是动态加载dllSample.dll并在其中使用add函数的示例 typedef int(u stdcall*dllAdd)(int,int)C++ 在C+中使用DLL+;项目,c++,dll,C++,Dll,有一个包含文档的DLL库,但没有头文件。在C++程序中有没有使用库函数的简单方法?如何使用代码块引用DLL?提前感谢。以下是动态加载dllSample.dll并在其中使用add函数的示例 typedef int(u stdcall*dllAdd)(int,int) intmain() { HINSTANCE dllInstant; dllAdd-Add; dllInstant=LoadLibrary(_T(“dllSample.dll”); 如果(dllInstant) { Add=(dllAd
intmain()
{
HINSTANCE dllInstant;
dllAdd-Add;
dllInstant=LoadLibrary(_T(“dllSample.dll”);
如果(dllInstant)
{
Add=(dllAdd)GetProcAddress(dllinstat,“Add”);
如果(添加)
{
cout只要您有导出DLL函数的文档,就不需要头文件(甚至不需要导入库),但您确实需要了解所调用函数的各个方面
文件应包括
函数名
函数参数类型
返回类型
调用约定(\uu stdcall
,\uu cdecl
等)
获得此信息后,就可以调用导出的DLL函数了
例如,假设其中一个导出函数返回一个LONG
,并将2DWORD
s作为参数。调用约定为\uu stdcall
。函数名为“Func1”
#包括
#包括
typedef LONG(u stdcall*MyFunc)(DWORD,DWORD);
int main()
{
//加载DLL
HMODULE hMod=LoadLibrary(_T(“MyDLL.dll”);
if(hMod)//检查DLL是否已成功加载
{
德沃德arg1=10;
德沃德arg2=20;
长返回值;
//获取函数
MyFunc fn=(MyFunc)GetProcAddress(hMod,“Func1”);
//确保函数存在
如果(fn)
return_value=fn(arg1,arg2);//调用函数
//...
//...
//如果不再需要,请卸载DLL
免费图书馆;
}
}
请注意对LoadLibrary
、GetProcAddress
和FreeLibrary
的调用。要成功调用导出的DLL函数,您需要熟悉这些Windows API函数
还要注意确保库成功加载、函数存在等的检查
文档链接:
使用loadlibrary加载dll,使用GetProcAddress获取指向函数的指针。
int main()
{
HINSTANCE dllInstant;
dllAdd Add;
dllInstant = LoadLibrary(_T("dllSample.dll"));
if(dllInstant)
{
Add = (dllAdd)GetProcAddress(dllInstant, "add");
if(Add)
{
cout<<Add(3,4);
}
}
getch();
}
#include <windows.h>
#include <tchar.h>
typedef LONG (__stdcall *MyFunc)(DWORD, DWORD);
int main()
{
// Load the DLL
HMODULE hMod = LoadLibrary(_T("MyDLL.dll"));
if ( hMod ) // check if DLL was loaded successfully
{
DWORD arg1 = 10;
DWORD arg2 = 20;
LONG return_value;
// get the function
MyFunc fn = (MyFunc)GetProcAddress(hMod, "Func1");
// make sure function exists
if ( fn )
return_value = fn(arg1, arg2); // call the function
//...
//...
// unload the DLL if no longer needed
FreeLibrary( hMod );
}
}