1.自製Dll
a. VS 新增專案 → Visual C++ → Win32 → Win32專案 → 輸入專案名稱(ex:test) → 確定
b. 下一步 → 應用程式類型: 選 Dll → 完成
c. 刪除 Dllmain.cpp
d. 在 text.cpp 下加入以下程式碼
#include <iostream>
#include <Windows.h>
using namespace std;
extern "C" __declspec( dllexport ) int Add(int a, int b)
{ return a+b; }
extern "C" __declspec( dllexport ) int Sub(int a, int b)
{ return a-b; }
// 進入點
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
return TRUE;
}
e.建置專案 → 完成 → 可在 專案資料夾 下的 Debug資料夾 找到Test.dll
f.為什麼要加 extern "C" ,可在參考的第二個連結看到。
g.在檔案系統FAT32下產生DLL可能發生問題,解決方法如下:
http://www.wretch.cc/blog/MtvBoy/21514680
h.Dll 製作與使用 參考來源:
http://kevincg.wordpress.com/2008/06/18/dynamic-linking-libraries/
http://blog.csdn.net/wangjingfei/archive/2009/10/16/4682080.aspx
2.AutoIt DllCall
a.新增一個 DllCall.au3
b.貼入以下 Stript
$result = DllCall("Test.dll", "int:cdecl", "Add", "int",1,"int",2)
MsgBox(0,"",$result[0])
c.完成
d.注意:第二個參數為 Dll Function 的回傳型態 int ,為什麼後面要加 :cdecl 請參考 AutoIt Help 中的 DllCall Script 的 Remark
e.補充: __stdcall ,__cdecl的區別http://kevincg.wordpress.com/2008/06/17/__stdcall-__cdecl%E7%9A%84%E5%8D%80%E5%88%A5-%E5%86%8D%E6%AC%A1%E6%8E%A2%E8%A8%8E/
留言列表