Visual C++ 2010 Express Tips: 用 C 和 C++ 創建動態鏈接庫

先簡單說一下這篇小文的目的。其實純粹是因爲上一篇文章《將C語言源代碼編譯成動態鏈接庫》裏面介紹了用命令行工具(cl、link或gcc)創建動態鏈接庫,但程序員在實際工作中用得最多的還是IDE,所以有必要說說在IDE裏面怎麼做這件事。

創建動態鏈接庫,那就直接用C++好了,Visual C++多麼強大。但是我喜歡C語言勝過喜歡C++,所以打算看看如何用純C來創建動態鏈接庫。

工具依然選擇Visual C++ 2010 Express,種種好處不再一一敷述。

我們現看看怎麼用C++創建動態鏈接庫,再看看怎麼用C創建動態鏈接庫。

 

我們在Visual C++ 2010 Express裏面,分別用 C++ 和 C 來把下面這個簡單的函數封裝到動態鏈接庫(DLL)裏面:

    int sum(int a, int b)  
    {  
        return a + b;  
    }  

 

一、Visual C++ 2010 Express Tips: 用 C++ 創建動態鏈接庫


Step 1:創建Win32 Console Application

本例中我們創建一個叫做“Test”的Solution。


Step 2:將Application Type設定爲DLL

在接下來的 Win32 Application Wizard 的 Application Settings 中,將 Application type 從 Console application 改爲 DLL:


Step 3:將方法暴露給DLL接口

現在在這個Solution中,目錄和文件結構是這樣的:


編輯 Test.cpp 如下:

    #include "stdafx.h"  
      
    extern "C"  
    {  
        __declspec(dllexport) int sum(int a, int b)  
        {  
            return a + b;  
        }  
    }  

Step 4:編譯

直接編譯即可。


二、Visual C++ 2010 Express Tips: 用 C 創建動態鏈接庫

下面我們用C來創建DLL。

前兩步和用C++創建DLL是完全一樣的:

Step 1:創建Win32 Console Application

本例中我們創建一個叫做“Test”的Solution。

Step 2:將Application Type設定爲DLL

在接下來的 Win32 Application Wizard 的 Application Settings 中,將 Application type 從 Console application 改爲 DLL:

 

Step 3:更改編譯選項

 

現在我們在此Project的Properties裏面,找到 Configuration Properties | C/C++ | Advanced | Compile As 把這一項從默認設置(Default)更改爲Compile as C Code (/TC)


然後,再在此Project的Properties裏面,找到 Configuration Properties | C/C++ | Precompiled Headers | Precompiled Header 把這一項從默認的 Use(/Yu) 更改爲Create(/Yc)


Step 4:刪掉/重命名.cpp文件,增加.c文件

現在在這個Solution中,目錄和文件結構是這樣的(當然現在和C++的例子完全一樣,但是馬上我們所刪除/重命名.cpp文件):

現在,我們這樣做:

  1. 將 dllmain.cpp 重命名(Rename)成 dllmain.c 
  2. 將 Test.cpp 重命名(Rename)成 Test.c 
  3. 刪除 stdafx.cpp (Remove --> Delete)

 

現在我們的solution的目錄和文件結構是這樣的:

 

Step 5:將方法暴露給DLL接口

編輯 Test.c 如下:

    #include "stdafx.h"  
      
    __declspec(dllexport) int sum(int a, int b)  
    {  
        return a + b;  
    }  

和C++的代碼相比,由於現在已經是純C語言的環境了,所以不再需要 extern "C" 這個申明瞭。

Step 6:編譯

直接編譯即可。

 

參考文獻:

  1. 將C語言源代碼編譯成動態鏈接庫 http://blog.csdn.net/xinyaping/article/details/7284899
  2. Visual C++ 2010 Express Tips: 編寫C語言程序 http://blog.csdn.net/xinyaping/article/details/6833679

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章