VS2010下生成dll的方法

2022-09-26 03:36:09 字數 2924 閱讀 1377

1.首先建立生成dll的專案:開啟vs2010,兩種途經建立dll專案,基於mfc dll的和基於win32控制台應用程式的,這裡選擇基於win32控制台建立。

a.檔案--新建--專案(專案命名為myapi)--visual c++ --win32--選擇win32控制台應用程式;

b.接下來下一步一直到如下圖,程式型別選擇dll,如無特殊需要選擇空專案完成,專案建立完畢;

2.定義標頭檔案:為專案新增標頭檔案myapi.h 內部新增如下**,

#ifndef _dll_api

#d _dll_api _declspec(dllexport)

#else

#define _dll_api _declspec(dllimport)

#endif

_dll_ap程式設計客棧i int add(int a,int b);

內部定義乙個add()函式介面,如需新增其他函式介面,可以接著繼續定義,如

_dll_api int minus(int a,int b);

_dll_api int otherfunc(int,int,int);

3.定義原始檔:為專案新增相應的原始檔myapi.cpp 之後便是在該原始檔中對函式進行定義,內部新增如下**,

#include "myapi.h"

int add(int a,int b)

4.編譯至通過,生成dll:這裡有個小建議,因為dll專案不會生成exe,無法實時測試api,所以建議先在一般空專案內除錯並測試通過api的函式體**,然後再建立dll專案直接編譯通過,這樣更方便可靠。 回到正題,dll專案編譯通過後有用的就是myapi.h標頭檔案以及debug目錄下新生成的myapi.dll 和myapi.lib檔案,

5.呼叫dll:為了測試我們剛剛生成的dll,建立新的專案mytest。包含宣告myapi.h標頭檔案,這裡存放了定義的介面。將myapi.dll檔案放入新工程debug資料夾下(.exe執行時需要呼叫,新專案如未編譯則沒有debug資料夾,待編譯後有了該資料夾再將dll檔案放入)。將myapi.lib檔案放在與原始檔及標頭檔案相同路徑下(編譯時需要),接下來需要將.lib資源新增到專案中,兩種方法。

一種方法是,在專案屬性-鏈結器-輸入中「附加依賴項」加入myapi.lib檔案(當然,有過未設定此處亦編譯成功的經歷,但不建議);

另一種呼叫方法是在新專案主程式中新增如下命令 則無需設定依賴項;

#pragma comment(lib,"myapi.lib")

至此,全部完成任務,編譯通過後正常使用你自己定義的api了~

vs2010中使用cl快速 生成dll的方法

方案一:

1、命令列中輸入cl example.cpp,生成exam程式設計客棧ple.obj和example.lib檔案。有可能還會提示「沒有入口點」的錯誤。這是因為我們的cpp中是要生成dll檔案的,並沒有main()這樣的主函式作為入口點。如果是c檔案,則輸入cl /c example.cpp

2、命令列中輸入cl /def:example.def /dll:example.obj

方案二:

命令列中輸入 cl /ld example.cpp example.def,直接生成exampssltyile.dll(名字會因在def中定義的不同而有所不同)檔案。有可能會提示(warning lnk4070: .exp 中的 /out:example.dll 指令與輸出檔名「example.exe程式設計客棧」不同;忽略指令),這時生成的可能是example.exe檔案。只要將example.exe改成example.dll就可以了,或者直接在載入dll的函式中載入example.exe.

注意:/ld一定要大寫,不能寫成/ld,這裡可折騰了我快一天了才找出來的原因。

vs2010 問題 >link : fatal error lnk1123: 轉換到 coff 期間失敗: 檔案無效或損壞

>link : fatal error lnk1123: 轉換到 coff 期間失敗: 檔案無效或損壞

問題說明:當安裝vs2012之後,原來的.net 4.0會被替換為.net 4.5。解除安裝vs2012時,不會恢復.net 4.0。

l 當vs2012安裝後,vs2010的cvtres.exe就無法使用了。如果你的path環境變數中vs2010的工具路徑第乙個出現,而且鏈結器需要將.res檔案轉換為coff 物件格式,就會導致lnk1123錯誤。

l 當vs生成pe檔案頭時,使用的cvtres.exe版本錯誤,不能與當前的.net平台相容。

解決方案:

參考:因為是cvtres.exe版本錯誤導致的結果,所以凡是能使vs鏈結器找到正確的cvtres.exe版本的方法都可以解決該問題。或者使vs鏈結器不生成coff的方法都可以。

【方法一】

當前系統中存在兩個cvtres.exe檔案,版本不同。讓vs2010使用.net 4.5的cvtres.exe程式。

具體步驟:

重新命名或刪除:(vs2010安裝的位置)c:\program files (x86)\microsoft visual studio 10.0\vc\bin\cvtres.exe

這樣c:\windows\microsoft.net\framework\v4.0.30319 (.net 4.5)中的cvtres.exe檔案就可以被vs2010使用。

【方法二】

解決方法如下:

專案\屬性\配置屬性\清單工具\輸入和輸出\嵌入清單:原來是「是」,改成「否」。

說明:這種方法每個工程均需要修改配置。

【方法三】

安裝:vs2010 sp1. 該版本應該是能使用.net 4.5的,並配有正確的cvtres.exe版本。

注意:安裝vs 2010 sp1 時會移除64-bit 編譯器. 通過安裝 vs 2010 sp1 compiler pack 能夠重新獲得。

【方法四】

解除安裝.net 4.5,重灌.net 4.0

本文標題: vs2010下生成dll的方法

本文位址:

VS2010下生成dll的方法

1.首先建立生成dll的專案 開啟vs2010,兩種途經建立dll專案,基於mfc dll的和基於win32控制台應用程式的,這裡選擇基於win32控制台建立。a.檔案 新建 專案 專案命名為 dll visual c win32 選擇win32控制台應用程式 b.接下來下一步一直到如下圖,程式型別...

VS2010下生成dll的方法

1.首先建立生成dll的專案 開啟vs2010,兩種途經建立dll專案,基於mfc dll的和基於win32控制台應用程式的,這裡選擇基於win32控制台建立。a.檔案 新建 專案 專案命名為myapi visual c win32 選擇win32控制台應用程式 b.接下來下一步一直到如下圖,程式型...

關於VS2010下生成lib和dll,並使用的過程

首先要準備好.h和.cpp檔案 一 lib 下一步,最好不要選預編譯選項!選預編譯頭的話,就在.cpp檔案中新增 include stdafx.h 然後新增進來.h和.cpp檔案,就可以直接點生成解決方案了。別點除錯,因為沒有入口函式。這裡要注意你生成lib的專案配置屬性要和你使用此lib的專案配置...