问题标签 [unmanagedexports]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3491 浏览

c# - 使用非托管导出从 C# DLL 返回字符串到 Inno Setup 脚本

我有一个 C# DLL,它使用由 Inno Setup Pascal 脚本直接调用的Unmanaged Exports公开一个函数。这个函数需要返回一个字符串给 Inno Setup。我的问题是我怎样才能做到这一点?
我首选的方法是将缓冲区从 Inno Setup 传递给 C# 函数,该函数将返回此缓冲区内的字符串。我想出了这段代码:

C#函数:

Inno 设置脚本:

当我运行此代码时,Res变量为空(我在日志中看到“”)

如何从此 DLL 返回字符串?

请注意,我使用的是 Unicode 版本的 Inno Setup。我也不想使用 COM 调用此函数,也不想在 DLL 中分配缓冲区并将其返回给 Inno Setup。

0 投票
1 回答
214 浏览

c# - 使用 StringBuilder 反转 pinvoke char *[]

我正在为 C++ 项目编写一个插件,并且我正在利用 UnmanagedExports Nuget 包,它允许在托管 .NET 代码中公开 C 函数。 https://www.nuget.org/packages/UnmanagedExports

我编写了一个插件,它接收一个字符串(在 c++ 中定义为 char *) 下面是我为此定义的 UnmanagedExport 方法。

上面的代码运行得很漂亮。

现在的问题是如何将字符串数组传递给我的 UnmanagedExport 代码。C++ 将调用定义为需要 char *[]

这不起作用。

0 投票
1 回答
2406 浏览

c# - C#非托管导出不起作用

我正在尝试使Unmanaged Export Basic 示例正常工作。

我正在遵循的步骤:

  • 创建一个新的类库项目。
  • 使用 nuget 添加 UnmanagedExports。
  • 将 CPU 目标更改为 x86。
  • 将我正在关注的教程中的代码添加到 .cs 文件中。
  • 建造

该项目已成功构建,但是当我使用DLL Export Viewer检查我的 dll 时,我看不到我的任何函数。

我正在使用 32 位操作系统和 SharpDevelop 4.4(我也尝试过使用其他 SharpDevelop 版本和 64 位操作系统,结果相同)。

我的 sln 文件:

我的 csproj 文件:

我的cs文件:

我的 dll 的 dll 导出查看器 我的 dll 的 DLL 导出查看器

工作 dll 的 Dll Export Viewer(从教程网站下载) 工作 dll 的 Dll Export Viewer(从教程网站下载)

两个 dll(我的和下载的)对于我的操作系统具有相同的大小,但对于 DLL 导出查看器而言却不是。

我错过了什么?

0 投票
1 回答
104 浏览

c# - 将 pcap dll 文件嵌入到 c# 项目创建的 DLL 中

我正在尝试创建用户定义的函数,该函数使用 pcapDotNet.Core.Dll 文件中定义的类。我的 c# 代码如下:

我的python代码如下:

当我尝试从 python 调用 checkFunction 时,错误为“OSError:[WinError -532462766] Windows Error 0xe0434352”。这是因为函数正在使用 pcap 文件中的 LivePacketsDevice 类。我在生成 DLL 作为参考时嵌入了 pcapDotNet.Core.Dll 文件。任何人都可以建议这个问题的解决方案。

0 投票
0 回答
499 浏览

c# - 无法安装 UnmanagedExports nuget 包

我是 C# 的新手,所以如果我混淆了术语,我会提前道歉。关于 UnmanagedExports nuget 包,我似乎有一个先有鸡还是先有蛋的场景。当我尝试安装旧版 (1.2.7) 时,我收到一条错误消息,提示“Package Unmanaged Exports 1.2.7 与 netstandard14 不兼容(它仅支持 0.0 版)”。

我尝试安装较新版本 (DllExport) 并收到相同的错误消息,只是现在它说 DllExport 支持 2.0 版,而不是 1.4 版。

我觉得我在两者之间陷入了困境,我真的希望这只是我忽略的一些简单的事情。谢谢你考虑我的问题。

0 投票
1 回答
402 浏览

c# - UnmanagedExports 等效 c#.Core2

我对 C# 比较陌生,并且在 .Net Framework 中做了一些项目,但被推向了 .Core 方面。

我的问题是 - 我在我的一些项目中使用UnmanagedExports来创建一些库(Linux / Win),但无法使用 .Core2 进行导出。我没有收到任何错误,一切都编译得很好,只是没有暴露出口。

我确保编译架构设置x64any不会正确构建。我假设该库与 .core 2 不兼容,并且我需要使用不同的方法,但不确定要采取什么路径。一些指导将大有帮助。

0 投票
1 回答
312 浏览

c# - UnmanagedExports 函数参数 - 原因 VBA 49 错误的 DLL 调用约定

我无法让我的 C# Dll 与我的 Excel 宏启用电子表格一起调用 Dll 中的函数。如果它没有参数,我可以调用该函数,能够返回预期值。但是当我向函数添加输入参数时,我无法让 VBA 的 Dll 调用成功。

我的 C# 模块的总和如下:

我的 VBA 代码如下。

模块声明:

调用上面的函数,在一个按钮的点击事件子里面,如下:

执行上述行的那一刻,出现错误 49。

我尝试了以下方法:

  1. 删除了 VBA 函数声明中的“ByVal”
  2. 在 [DllExports ...] 之后删除并添加了 C# 函数中的装饰
  3. 确保我针对正确的 CPU 平台
  4. 删除了声明和调用中的参数,以确保 DLL 函数可访问。

我究竟做错了什么?

0 投票
1 回答
624 浏览

c# - 可以让 Python 向 C# 发送一个可变长度的字符串数组吗?

这是这个问题的反面/补充。

我正在使用Unmanaged Exportsctypes,并希望将可变长度的字符串列表从 Python 传递到 C#,并返回一个字符串。

我尝试了四种 C# + Python 变体——没有一个成功。任何人都可以完成工作吗?

C#

Python

0 投票
1 回答
563 浏览

c# - Robert Giesecke 的非托管导出 - OUT 字符串

我正在从 VBA 工作到 .NET。我有一个使用 CLI 和 stdcall 的接口的工作版本

我正在尝试删除对 C++ 2015 运行时产生的依赖,看起来我可以使用 UnmanagedExports 来做到这一点。

但我有几个问题。

  1. 我可以只使用“ref string”作为参数并让它工作吗?
  2. 如果是这样,我可以用“out string”替换它吗?
  3. 在这两种情况下,我是否必须进行任何字符串/字符串长度管理?

  4. 我目前将几个回调作为“int”传递。从我在别处看到的一个例子来看,它看起来像在 C# 端,使用它,我应该能够用 Func 替换这些参数以进行回调,例如 Function A(p1 as String, p2 as Long, p3 as String) as Long

任何建议将不胜感激。

0 投票
0 回答
226 浏览

c# - 无法使用非托管导出导出 C# DLL 中的函数

我正在尝试使用 C# 创建一个 DLL。为了导出我的函数,我使用了 UnmanagedExports。

我的应用程序的输出类型为类库,平台目标设置为 x86。这是我的代码:

我构建并获取我的 DLL。当我dumpbin /exports Test.dll使用 Visual Studio 命令提示符运行时,我没有看到任何正在导出的函数。我有什么遗漏吗?