今天收到一個任務

任務內容是製作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

arrow
arrow
    文章標籤
    char str dll
    全站熱搜

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