vs2013 調用只有dll文件的動態庫(一)


有時候,用戶只能得到dll動態庫文件以及對這個文件的接口函數名稱。當我們調用這個dll庫時,我們就不能像平時一樣,通過.lib,.h和.dll這三個文件來調用dll庫內的算法了。

這里介紹一種只提供dll函數接口與.dll文件的調用方法。

順帶一下,先講一下dll創建流程:

創建--->項目--->Win32-->Win32控制應用程序--->DLL(D) 空項目

添加頭文件WinDll.h

1 #ifndef LIB_H
2 #define    LIB_H
3 extern "C" int __declspec(dllexport) add(int x,int y);
4 #endif

注: 3 extern "C" int __declspec(dllexport) add(int x,int y); 申明動態庫鏈接,這個很重要。

添加WinDll.cpp源文件

1 #include"Windll.h"
2 int add(int x, int y)
3 {
4     return  x + y;
5 }

編譯后,生成 WinDll.dll文件。至此,.dll文件創建完成。

 

下面是如何調用這個dll文件。

創建一個新的項目

並創建添加源文件

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<Windows.h>
 4 
 5 typedef int(*lpAddFun)(int, int);
 6 
 7 int main(int argc, char **argv)
 8 {
 9     HINSTANCE hDll;
10     lpAddFun addFun;
11     hDll = LoadLibrary(TEXT("..\\WinDll.dll"));
12     if (!hDll)
13     {
14         printf("Can't load dll.");
15     }
16     else
17     {
18         addFun = (lpAddFun)GetProcAddress(hDll, "add");
19         if (addFun != NULL)
20         {
21             printf("result=%d\n", addFun(1, 2));
22         }
23         FreeLibrary(hDll);
24     }
25     system("pause");
26 }

注: hDll = LoadLibrary(TEXT("..\\WinDll.dll")); 加載dll文件,這個路徑為dll存放路徑,也就是我們要將之前生成的dll這個文件拷貝到當前項目目錄下就可以了。

編譯運行:

 

謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM