簡體   English   中英

如何使用C#創建非托管DLL?

[英]How to create unmanaged DLL using C#?

我想使用C#創建一個DLL,然后可以通過以下方式從VBA調用它 -

Private Declare Function invokePath Lib "\\shared_computer\Projects\somedll\myDLL.dll" (ByVal strUName As String, ByVal strSFile As String) As String

這個想法是,如果DLL的路徑改變了,我只需要更新私有聲明功能行中的路徑....

我已經搜索了很多,也不確定這種安排是否可行 - 我們可以在沒有引用或注冊的情況下從網絡路徑調用DLL函數。

其實你可以。 查看unmanagedexports這是一個完整的演練,你將能夠創建這樣的入口點:

[DllExport("GenerateSomehting", CallingConvention = CallingConvention.Cdecl)]
public static int GenerateSomehting(int somevalue, ref IntPtr pointer)

並像任何其他非托管DLL一樣調用它。

[DllImport("MyGenerator.dll", CallingConvention = CallingConvention.Cdecl)]
static extern int GenerateSomehting(int somevalue, ref IntPtr pointer);

您無法使用C#創建非托管DLL,因為C#是僅支持.NET的語言。 使用C ++。

從非托管代碼(例如VBA)使用.NET DLL的唯一方法是使用COM互操作。

在這里檢查P / Invoke,本文包含一個有用的表,說明如何將托管類型轉換為非托管類型,短代碼示例(在C#中),提示和資源列表。

必要的P / Invoke

C#Dll無法導出任何其他非CLR代碼可以調用的函數。

這是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM