c# - 使用 GetProcAddress 从 C# 调用 C# DLL

标签 c# dll

我的程序需要从运行时指定的 C# dll 文件调用方法。 为此,我想像这样使用 GetProcAddess:

string sytDll = @"C:\Programming\dllexample.dll";
IntPtr DllLoaded = LoadLibrary(sytDll);
if (DllLoaded != IntPtr.Zero)
{
   IntPtr pSytCheck = GetProcAddress(DllLoaded, "f1");  
}

Dlloaded 返回一个值,但是 GetProcAddress 总是返回 0。

我想知道 C# DLL 的格式是否正确。这是它的样子:

namespace dllexample
{
    public class Class1
    {
        public static int f1(int a)
        {
            return a;
        }
    }
}

我的印象是我没有正确声明 dll,或者我没有使用正确的函数名称。

谁能告诉我我做错了什么?

谢谢

最佳答案

DLL 是完全合适的,不是问题所在。问题是我不知道你为什么要通过 GetProcAddress() 从 DLL 调用方法,而不是简单地将 DLL 导入你的程序并从其纯类调用函数。也就是说,你应该这样做:

  • 从 GetProcAddress() 中删除您拥有的内容
  • 将库 DLL 添加到要从中调用 DLL 方法的程序
  • 使用 using Your_dll_name;
  • 创建一个快速类选择器,例如DLLClass dllclass = new DLLClass();
  • 并使用 dllclass 调用该方法。

关于c# - 使用 GetProcAddress 从 C# 调用 C# DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942904/

相关文章:

c# - 简单的聊天应用信号器

c# - 如何在 EF Core 表达式中使用继承的属性?

Powershell加载dll出现错误: Add-Type : Could not load file or assembly 'WebDriver.dll' or one of its dependencies.操作不受支持

来自 DLL 的 Delphi 接口(interface)

python - pycharm中导入cv2时出现ImportError : DLL load failed: The specified module could not be found.

c# - asp.net core 操作中参数的映射命名约定

c# - 表单验证只允许英文字母字符

c# - 如何将 Linq 语句的结果作为 List 获取?

c++ - 哪个模块调用了我的 DLL 导出函数?

c++ - 如何以编程方式确定 Windows 可执行文件 DLL 依赖项?