国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - C# - C# 在項目中引用x86 x64的非托管代碼的方法

C# 在項目中引用x86 x64的非托管代碼的方法

2022-02-20 14:10C#教程網(wǎng) C#

使用宏最簡單的方法是編譯兩個版本,編譯多個版本可以點擊配置管理器,然后創(chuàng)建x86和x64,然后版本添加宏,這樣就可以判斷宏來使用不同的dll。這篇文章主要介紹了C# 在項目中引用x86 x64的非托管代碼的方法,需要的朋友可以參考

因為現(xiàn)在的項目使用的是 anycpu 在 x86 的設(shè)備使用的是x86,在x64使用的是x64,但是對于非托管代碼,必須要在x64使用x64的dll,在x86使用x86的dll。在c++沒有和c#一樣的 anycpu 所以需要在項目運行在x86的時候加載x86的dll。 本文告訴大家如何在代碼引用不同的dll。

使用宏

最簡單的方法是編譯兩個版本,編譯多個版本可以點擊配置管理器,然后創(chuàng)建x86和x64,然后版本添加宏,這樣就可以判斷宏來使用不同的dll

C# 在項目中引用x86 x64的非托管代碼的方法

點擊活動解決方案平臺,然后點擊新建

C# 在項目中引用x86 x64的非托管代碼的方法

選擇項目屬性,點擊生成,就可以添加不同的宏

C# 在項目中引用x86 x64的非托管代碼的方法

于是在后臺代碼可以這樣寫

C# 在項目中引用x86 x64的非托管代碼的方法

?
1
2
3
4
5
6
7
#if x86
  public const string dll_file_name = "svkiqauhkvdhrureh32.dll";
#else
  public const string dll_file_name = "svkiqauhkvdhrureh64.dll";
#endif
  [dllimport(dll_file_name, entrypoint = "hfwzsnhzhpbbzbn", callingconvention = callingconvention.cdecl)]
  private static extern int hfwzsnhzhpbbzbn(int var1, int var2);

可以看到這個方法如果有很多個 dll 那么需要寫很多路徑

多個函數(shù)

實際上如果已經(jīng)有兩個dll ,那么可以使用兩個不同函數(shù)

?
1
2
3
4
5
6
[dllimport("svkiqauhkvdhrureh32.dll", entrypoint = "hfwzsnhzhpbbzbn",
   callingconvention = callingconvention.cdecl)]
  private static extern int hfwzsnhzhpbbzbn32(int txcuiwkjvwu, int hhmzfadnhexkmr);
  [dllimport("svkiqauhkvdhrureh64.dll", entrypoint = "hfwzsnhzhpbbzbn",
   callingconvention = callingconvention.cdecl)]
  private static extern int hfwzsnhzhpbbzbn64(int txcuiwkjvwu, int hhmzfadnhexkmr);

然后再寫一個函數(shù)

?
1
2
3
4
5
6
7
8
9
public int hfwzsnhzhpbbzbn(int txcuiwkjvwu, int hhmzfadnhexkmr)
    {
      if (environment.is64bitprocess)
      {
        return hfwzsnhzhpbbzbn64(txcuiwkjvwu, hhmzfadnhexkmr);
      }
 
      return hfwzsnhzhpbbzbn32(txcuiwkjvwu, hhmzfadnhexkmr);
    }

這樣就不需要在使用的時候判斷當(dāng)前使用的是哪個,但是如果dll多了,一個dll都需要寫三次,看起來代碼還是很爛

設(shè)置查找的文件

實際上好多人都覺得,應(yīng)用程序首先是從運行的目錄開始查找dll,如果找不到,就去gac查找,如果還是找不到,就去system查找。實際上這句話是不對的,在沒有設(shè)置默認(rèn)查找的文件的時候就是這樣,但是軟件是可以設(shè)置查找文件。

設(shè)置的方法使用使用這個dll,請看下面

?
1
2
3
4
5
6
7
8
public int hfwzsnhzhpbbzbn(int txcuiwkjvwu, int hhmzfadnhexkmr)
  {
   if (environment.is64bitprocess)
   {
    return hfwzsnhzhpbbzbn64(txcuiwkjvwu, hhmzfadnhexkmr);
   }
   return hfwzsnhzhpbbzbn32(txcuiwkjvwu, hhmzfadnhexkmr);
  }

需要先把 x86 的 dll 放在程序的 x86文件夾,當(dāng)然對于x64的大家也知道放哪里。

然后在程序運行的時候使用下面的代碼

?
1
2
[dllimport("kernel32.dll", charset = charset.auto, setlasterror = true)]
 private static extern bool setdlldirectory(string path);

這樣就可以直接寫一個函數(shù),最后的方法是我推薦的。

但是存在一些特殊的文件,他不能放在x86文件夾,所以就需要使用下面的代碼特別加載

?
1
2
3
var path = path.getdirectoryname(assembly.getentryassembly().location);
   path = path.combine(path, environment.is64bitprocess ? "x64" : "x86");
   setdlldirectory(path);

查看了項目的代碼才看到,實際上還有一個方法,就是在運行的時候,如果當(dāng)前運行的是x86的,就從x86文件夾復(fù)制dll出來,這個方法是速度最慢的。

總結(jié)

以上所述是小編給大家介紹的c# 在項目中引用x86 x64的非托管代碼的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

原文鏈接:https://www.tuicool.com/articles/nQ3uAzI

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天天干干干干 | 亚洲国产视频一区二区 | 毛片视频免费 | 91看片| 免费午夜电影 | 亚洲欧美日韩精品 | 99热手机在线观看 | 久久综合一区 | 国产精品jizz在线观看麻豆 | 欧美一区二区日韩一区二区 | 久久精品国产免费 | 亚洲免费美女视频 | 国产色综合视频 | 一级黄色免费网站 | 成人午夜在线 | 国产一级一级国产 | 久久精品一 | 日韩福利视频 | 免费一级在线视频 | 国产日韩欧美一区二区 | 欧美 亚洲 一区 | 精品一区二区免费视频视频 | 国产毛片欧美毛片久久久 | 国产精品中文字幕在线 | 色婷婷在线视频观看 | www.xxx日韩 | 黄色片在线播放 | 看av网站 | 亚洲国产成人av | 中文字幕乱码亚洲精品一区 | 日韩一区二区三区视频 | 精品久久久久久久久久久久 | 国产成人精品一区二区三区网站观看 | 激情久久久久 | 久久av综合| 观看av| 自拍视频在线观看 | 日韩精品一区二区三区在线观看 | 国产高清一 | 中文字幕久久久 | 午夜操操操 |