[英]How to export C# methods?
我們如何導出C#方法?
我有一個DLL,我想在Python語言中使用它的方法和ctypes模塊。 因為我需要使用ctypes模塊,所以我需要導出C#方法,使它們在Python中可見。
那么,我如何導出C#方法(就像在C ++中一樣)?
與流行的看法相反,這是可能的。
看到這里 。
使用普通的Python實現(“CPython”),你不能,至少不能直接。
您可以使用C ++ / CLI圍繞我們的C#方法編寫本機C包裝器,並從Python調用這些包裝器。
或者,您可以嘗試IronPython 。 這使您可以運行Python代碼並以任何.Net語言調用代碼,包括C#。
(這可能不再具有相關性,因為SLaks發現了這個巧妙的鏈接,但我會留下一個編輯版本供參考......)
將.NET / C#對象暴露給非托管代碼(如Python)的“常規”方法是為C#DLL(.NET程序集)創建一個COM可調用包裝器,並使用Python的COM / OLE支持調用它。 要創建COM可調用包裝器,請使用tlbexp
和/或regasm
命令行實用程序。
但是,顯然,這並沒有提供SLaks鏈接所做的C / DLL風格的API。
那是不可能的。 如果需要DLL導出,則需要使用C ++ / CLI語言。 例如:
public ref class Class1 {
public:
static int add(int a, int b) {
return a + b;
}
};
extern "C" __declspec(dllexport)
int add(int a, int b) {
return Class1::add(a, b);
}
該類也可以用C#編寫。 C ++ / CLI編譯器為導出發出特殊的thunk,以確保加載CLR並執行切換到托管模式。 這不是很快。
在C#中編寫[ComVisible(true)]代碼是另一種可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.