close

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/

arrow
arrow
    全站熱搜

    GiMi 發表在 痞客邦 留言(0) 人氣()