DllImport 自動選擇x64或x86 dll

[DllImport("pdfium.dll")]
public static extern void FPDF_AddRef();

 

多平臺支持問題來源:

1、c的庫是編譯時確定了平臺,比如x86或x64,一個dll不能在運行時既支持x86也支持x64,所以如果引用它的.net程序還想支持any cpu,只能在運行後根據平臺去加載對應平臺的c的庫;

2、DllImport 特性要求傳入string dllName參數,這個參數可以是相對路徑或絕對路徑,但.Net的特性有個要求:特性實參必須是特性形參類型的常量表達式、typeof 表達式或數組創建表達式。也就是說string dllName這個值必須在寫代碼的時候(編譯時)就是常量的,而不能在運行時傳給它;

3、DllImport 特性是密封的,我們不能繼承它或修改它的什麼邏輯,到達運行時得到與平臺匹配的string dllName的值 ;

 https://github.com/AndreyAkinshin/InteropDotNet

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