今天收到一個任務
任務內容是製作DLL讓主程式可以呼叫
因此就用char**來實作吧
1. DLL端的lib.def需定義函式名稱
LIBRARY LIB
EXPORTS
add @ 1
Manufacture @ 2
model @ 3
2. DLL端的程式碼中須增加函式lib.cpp,當主程式呼叫將會回傳char*
char*_stdcall Manufacture(char **str)
{
//*str = "abc";
//strcpy(str,"abc");
return *str;
}
char*_stdcall model(char ** str)
{
//*str = "abc";
//strcpy(str,"abc");
return *str;
}
主程式端
#include "stdafx.h"
#include "windows.h"
typedef char* (_stdcall * lpManufactureFun)(char**);
typedef char* (_stdcall * lpmodelFun)(char**);
int main(int argc, char* argv[])
{
HINSTANCE hDll;
lpManufactureFun ManufactureFun;
lpmodelFun modelFun;
hDll = LoadLibrary("XXX.dll");
if (hDll != NULL)
{
ManufactureFun = (lpManufactureFun)GetProcAddress(hDll,"Manufacture");
if(ManufactureFun != NULL)
{
char *a = "you_name";
char result = (char)ManufactureFun(&a);
printf("address of a : %d\n", &a);
printf("Manufacture == %s\n", a);
//printf("\ncall add in dll:%d",result);
}
modelFun = (lpmodelFun)GetProcAddress(hDll,"model");
if(modelFun != NULL)
{
char *a = "my_name";
char result = (char)modelFun(&a);
printf("address of a : %d\n", &a);
printf("model == %s\n", a);
//printf("\ncall add in dll:%d",result);
}
FreeLibrary(hDll);
}
return 0;
}
參考:http://www.programmer-club.com.tw/ShowSameTitleN/c/20586.html
留言列表