C# DLLImport for C++ dll

标签 c# c++ dll dllimport managed

我有一个用 C++/CLI 和 .NET 构建的 .dll。因此,它针对 .NET 应用程序。 API 是一组使用托管类型的包装器,因此它是 NET 原生的。我导入了 .dll 并添加了如下函数:

[DllImport(@"maplib.dll")]
public static extern bool initialize(string a);

当我在我的 C# 代码中调用这个函数时,它工作正常,但如果我想添加另一个函数,比如..

[DllImport(@"maplib.dll")]
public static extern bool initialize(string a);
public static extern bool runfile(string a, string b);

当我运行我的程序时出现这个错误。它与第二个功能有关:

“无法从程序集‘myapp,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null’加载类型‘myapp.main’,因为方法‘runfile’没有实现(无 RVA)。”

为什么会出现此错误,我该如何解决?

最佳答案

如果需要两个函数,必须添加两次 DllImport 属性:

[DllImport(@"maplib.dll")]
public static extern bool initialize(string a);
[DllImport(@"maplib.dll")]
public static extern bool runfile(string a, string b);

但是,如果您的 dll 是 .NET,那么为什么不直接添加对它的常规引用并像使用 C# 代码一样使用它呢?

关于C# DLLImport for C++ dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200157/

相关文章:

c# - 为 C# 项目创建 C++ DLL - 未导出函数

c++ - MFC DLL 的 GUI 线束?

c# - DataGrid 保存按钮和 CanExecute

c# - 如何用奇怪的数组解析这个 JSON

c# - 表单在获取所有数据之前打开。如何让 UI 线程等待处理线程的第一个周期完成?

c++ - __cplusplus < 201402L 在 gcc 中返回真,即使我指定了 -std=c++14

c# - 在 LINQ 中表达 Oracle LISTAGG() 功能?

C++/结构范围

c++ - 使用 std::count 计算字符串 vector 中特定字符的数量 (C++)

java - winio64.dll 中有哪些方法以及如何使用它们