一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - VS2010下生成dll的方法

VS2010下生成dll的方法

2022-02-19 15:43C#教程網 C#

這篇文章主要介紹了VS2010下生成dll的方法,需要的朋友可以參考下

1.首先創建生成dll的項目:打開vs2010,兩種途經建立dll項目,基于mfc dll的和基于win32控制臺應用程序的,這里選擇基于win32控制臺建立。

a.文件--新建--項目(項目命名為myapi)--visual c++ --win32--選擇win32控制臺應用程序;
b.接下來下一步一直到如下圖,程序類型選擇dll,如無特殊需要選擇空項目完成,項目建立完畢;

VS2010下生成dll的方法

2.定義頭文件:為項目添加頭文件myapi.h 內部添加如下代碼,

?
1
2
3
4
5
6
7
#ifndef _dll_api
#define _dll_api _declspec(dllexport)
#else
#define _dll_api _declspec(dllimport)
#endif
 
_dll_api int add(int a,int b);

內部定義一個add()函數接口,如需添加其他函數接口,可以接著繼續定義,如

?
1
2
_dll_api int minus(int a,int b);
_dll_api int otherfunc(int,int,int);

3.定義源文件:為項目添加相應的源文件myapi.cpp 之后便是在該源文件中對函數進行定義,內部添加如下代碼,

?
1
2
3
4
5
#include "myapi.h"
 
int add(int a,int b){
  return a+b;
}

4.編譯至通過,生成dll:這里有個小建議,因為dll項目不會生成exe,無法實時測試api,所以建議先在一般空項目內調試并測試通過api的函數體代碼,然后再建立dll項目直接編譯通過,這樣更方便可靠。 回到正題,dll項目編譯通過后有用的就是myapi.h頭文件以及debug目錄下新生成的myapi.dll 和myapi.lib文件,

VS2010下生成dll的方法

5.調用dll:為了測試我們剛剛生成的dll,創建新的項目mytest。包含聲明myapi.h頭文件,這里存放了定義的接口。將myapi.dll文件放入新工程debug文件夾下(.exe執行時需要調用,新項目如未編譯則沒有debug文件夾,待編譯后有了該文件夾再將dll文件放入)。將myapi.lib文件放在與源文件及頭文件相同路徑下(編譯時需要),接下來需要將.lib資源添加到項目中,兩種方法。
一種方法是,在項目屬性-鏈接器-輸入中“附加依賴項”加入myapi.lib文件(當然,有過未設置此處亦編譯成功的經歷,但不建議);
另一種調用方法是在新項目主程序中添加如下命令 則無需設置依賴項;

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

VS2010下生成dll的方法

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

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

方案一:
1、命令行中輸入cl example.cpp,生成example.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,直接生成example.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平臺兼容。
解決方案:

參考:

http://stackoverflow.com/questions/10888391/link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-invalid-or-c

因為是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

延伸 · 閱讀

精彩推薦
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
主站蜘蛛池模板: 亚洲免费网站在线观看 | 欧美精品一线二线大片 | 18无删减羞羞网站动漫 | 国产一级在线观看视频 | 国产精品福利在线观看免费不卡 | tube69中国露脸 | 小舞同人18av黄漫网站 | 亚洲不卡视频在线 | 亚洲毛片基地4455ww | 午夜久久久久久亚洲国产精品 | 日本妇人成熟免费不卡片 | 99久久99久久久精品齐齐鬼色 | 色老板视频 | 亚洲精品视频导航 | 日产国产精品亚洲系列 | 白丝女仆被啪到深夜漫画 | 四虎最新紧急更新地址 | 摸逼网| 免费看打屁股视频的软件 | 久久机热视频 这里只有精品首页 | 闺蜜高h| 性色欲情网站IWWW | 婷婷激情综合五月天 | 国产区香蕉精品系列在线观看不卡 | 日本性生活大片 | 无限资源在线观看播放 | 国产精品区一区二区免费 | 久久精品动漫网一区二区 | 男人的天堂久久精品激情a 男人的天堂va | 百合互慰吃奶互揉漫画 | 啊哈~嗯哼~用力cao我小说 | 秋葵丝瓜茄子草莓榴莲樱桃 | 爆操美女 | 成人免费在线视频 | 青青久久精品国产 | 99爱免费| 果冻传媒林予曦图片 | 99热免费在线观看 | 欧美理论片手机在线观看片免费 | 色综合天天综合中文网 | 奇米777狠狠 |