问题标签 [marshalling]

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 投票
2 回答
2066 浏览

c# - 编组链表

为重复发布道歉。

你好

我无法从 DLL 编组链接列表。

------C++结构和功能--------

------------C#声明------------

我在 deref2 声明时收到 FatalExecutionEngine 异常。我不知道如何取回链接列表并访问其内容。

这是我为获取链表而编写的 C++ 代码。我想要类似于在 C# 中工作的东西。

0 投票
1 回答
2660 浏览

java - 如何在 jaxb 中注释类型集合的成员

我已成功编组以下课程

现在我想让我的容器类保存多个 Field 实例,所以我用以下方式声明了一个类:

当我只是尝试编组容器字段时,我收到以下错误:

此上下文已知类 java.util.LinkedList 或其任何超类

如何注释字段成员,以便将容器类编组为字段集合?

0 投票
1 回答
2337 浏览

c# - 使用 C# 将非托管结构编组为托管代码

当我从外部应用程序获取时,我需要处理 bytes[] 。外部应用程序也是用 C# 完成的,它们通过 UDP 发送字节。他们正在发送从 struct 转换而来的字节,如下所述:

所以,当我得到字节时,我需要取出里面的 char[],然后从那个 char[] 中取出字符串。

我是这种非托管编码的新手。

0 投票
2 回答
918 浏览

c# - C# DLL extern 原型帮助

我有一个 C DLL,其导出如下所示:

在 C# 方面,我按如下方式使用它:

上面实际上工作得很好,但我花了一段时间才弄清楚我需要什么东西来编组。是否有任何指南仅列出所有可能的 c/cpp 数据类型及其等效的 C# 编组?

类似于:
c => C#
Char *myVar => [MarshalAs(UnmanagedType.LPStr)] string myVar
...
但列出所有类型?

我问的原因是因为我不知道何时使用“ref”或 out 或 IntPtr,或者将某些内容编组为什么类型。

最后,在上面的代码中,我将一个指向 unsigned char 数组的指针编组为一个指向字符串的长指针。这似乎不对,但它确实有效。以 byte[] 数组结尾更有意义,但我无法让它工作。如果只有我可以使用的在线参考...

0 投票
1 回答
770 浏览

c# - 读/写受保护的内存异常抛出(.net)

最后一行抛出的异常告诉我,我正在尝试在受保护的内存上读/写。我在这里做错了什么?谢谢

0 投票
3 回答
3038 浏览

delphi - 如何在 Delphi 7 中获取 GIT?

我正在尝试使用以下代码(Delphi)获取全局接口表:

但是,CoCreateInstance 会引发“类未注册”异常。事实上:在 HKCR/CLSID 中没有 {00000146- 等 } 的条目。

应该注册哪个 dll 或 ocx,才能在注册表中获取此定义?还是我做错了?

0 投票
4 回答
22805 浏览

c# - 将结构数组转换为 IntPtr

我正在尝试将 RECT 结构的数组(如下所示)转换为 IntPtr,因此我可以使用 PostMessage 将指针发送到另一个应用程序。

这会在最后一行给出 ArgumentException(“指定的结构必须是 blittable 或具有布局信息。”)。我需要以某种方式使用 PostMessage 将这个 RECT 数组传递给另一个应用程序,所以我真的需要一个指向该数据的指针。

我在这里有什么选择?

更新:这似乎有效:

再次更新以修复仲裁者评论的内容。

0 投票
1 回答
1916 浏览

c# - C# 中 Marshal.Copy 中的 NUL 字符

我定义了以下方法:

在此方法中,将提供的字符串 (recordInformation) 传递给用 C 编写的方法 (UnmanagedMethod)。根据我对此方法的文档,bufferSize 设置正确;但是, Marshal.Copy 会创建一个大小为 recordInformation.Length 的数组。当我将光线分配给 outputRecord 变量时,字符串的内容就是 bufferSize 的长度;但是,有许多 NUL (Char 0) 来填充字符串的其余部分,直到它到达 recordInformation.Length 字段。如果我将 UnmanagedMethod 参数列表中的最后一个参数更改为 bufferSize,则输出字符串将变为 NUL 字符。

我是在做错误的封送处理,还是在从字节数组创建字符串后有办法删除 NUL 字符?

谢谢

0 投票
4 回答
1863 浏览

c++ - 非类型模板参数...这是一个模板!(C++)

我基本上希望为通用 C 函数生成一个包装器,而无需手动指定类型。所以我有一个带有固定原型的回调,但我需要根据包装函数的类型在包装器中执行一些特殊代码......所以基本上我正在考虑在类模板中使用静态方法将我的函数包装到符合标准的接口,例如:

然后我想做类似的事情:

但是,问题是我不能直接在 Wrapper 模板中的函数参数中使用“S”,我必须首先将其列为参数:

但这意味着使用 ( ) 会更痛苦Wrapper<void,float,foobar>::wrapped,理想情况下,我只想在那里传递函数指针并让它自动计算出参数的类型(和返回类型)。需要明确的是,在包装函数内部,我需要引用函数指针的类型(所以我确实需要一些等价的 S 或 T)。

有没有办法做到这一点?

0 投票
3 回答
3668 浏览

c# - C# 到非托管 C++

我在 C# 代码中创建了 2 个结构:

和 :

在 C# 代码中,我调用了 C++ dll 的函数:

在 C++ 中,我还有 2 个结构:

该函数也声明如下:

在 C# 中填充结构的示例:

在调试模式下,就在调用 DLL 之前,C# 中的两个结构都是正确的(multiRollInfo 和 rollInfo)。在 C++ 中,rollInfo 很好。但是多卷信息有 5 个元素,但值是错误的。

怎么了?我该如何纠正?

非常感谢您的帮助