8

次の方法で VBA から呼び出すことができる C# を使用して DLL を作成したい -

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

アイデアは、DLL のパスが変更された場合、Private Declare 関数行のパスのみを更新する必要があるということです....

私はそれをたくさん検索しましたが、この配置が可能かどうかもわかりません-参照または登録せずにネットワークパスからDLL関数を呼び出すことができます.

4

4 に答える 4

15

実際にできます。これは完全なウォークスルー であり、次のようなエントリ ポイントを作成できます。

[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);
于 2013-08-14T07:35:56.503 に答える
4

C# は .NET 専用の言語であるため、C# でアンマネージ DLL を作成することはできません。C++ を使用します。

アンマネージ コード (VBA など) から .NET DLL を使用する唯一の方法は、COM 相互運用機能を使用することです。

于 2012-11-21T11:44:34.123 に答える
0

ここで P/Invoke を確認してください。この記事には、マネージ型からアンマネージ型への変換方法、短いコード例 (C#)、ヒント、およびリソースのリストが含まれています。

エッセンシャル P/Invoke

于 2012-11-21T11:46:02.930 に答える