Win32 DLL的建立和使用
Win32 DLL
0 建立Win32 DLL 專案
VS新建》專案》Win32專案》確定》下一步》DLL、匯出符號》完成
1 匯出標頭檔案 A.h
#ifdef CHESS_LIB_EXPORTS
#define CHESS_LIB_API __declspec(dllexport)
#else
#define CHESS_LIB_API __declspec(dllimport)
#endif
extern "C" CHESS_LIB_API int ExportedFunction(int depth);
2 專案屬性增加CHESS_LIB_EXPORTS 的定義
3 原始檔 A.cpp
CHESS_LIB_API int ExportedFunction(int depth)
{
// 此處為普通函式體
return 42;
}
4 引用DLL中的函式
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "ChessEngine.dll";
HMODULE libraryHandle = ::LoadLibrary(str.c_str());
if (libraryHandle != NULL)
{
typedef int (*EXECUTOR_FUNC)(int depth);//注意這裡的寫法
EXECUTOR_FUNC function = (EXECUTOR_FUNC)GetProcAddress(libraryHandle, "ExportedFunction");
char str[] = "123";
cout<<function(1);
}
else
{
cout << "can not loadlibrary!" << endl;
}
return 0;
}