问题标签 [interopservices]

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 投票
3 回答
622 浏览

c# - 将值分配给 C++ 中的结构到从 C# 传递的结构的问题

我在 C# 中有一个函数,它将结构数组传递到用 C++ 编写的 DLL 中。该结构是一组整数,当我读出 DLL 中的数据时,所有值都很好。但是,如果我尝试从 C++ 写入元素,则当我尝试读取然后返回 C# 时,值永远不会出现。

C#

C++

0 投票
2 回答
2970 浏览

c# - 如何使用来自 c# 的未注册 dll?

我有一个需要通过 c# 访问的自定义 dll(未注册)。如何在不注册 DLL 的情况下执行此操作?

编辑:它是一个 C++ dll。

0 投票
2 回答
663 浏览

runtime - #if !USING_NET11 using System.Runtime.InteropServices.ComTypes 是什么意思?#endif 是什么意思?

以下代码是什么意思,它有什么作用?真的需要吗?

在我的项目文件中,我使用 dshownet 包装器实现了网络摄像头捕获。上面的代码在 Form1.cs 文件中。

0 投票
2 回答
1640 浏览

c# - 什么是 IExpando,它在哪里使用?

我正在使用反射器浏览 mscorlib 中的类型(就像你做的那样......)并在 System.Runtime.InteropServices.Expando 命名空间中遇到了IExpando 接口

我在反射器中进行了搜索,甚至查看了 MSDN,似乎 mscorlib 中没有类型实现此接口。MSDN 上也没有代码示例。

有没有人在自己的代码中实现了这个接口?

有谁知道它的确切用途?

谢谢

0 投票
4 回答
15672 浏览

c# - COMException (0x80040154): 使用 AxAcroPDFLib 时未注册类

使用 AxAcroPDF 时出现以下错误

System.Runtime.InteropServices.COMException (0x80040154):类未注册(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))

引发错误的行是

如果有人知道解决方案,请帮助

0 投票
1 回答
286 浏览

c# - 使用 C# 在结构中调用 c++ 函数

我有一个 c++ dll。我必须在 c# 代码中使用这个 dll。在这个 dll 中:

如何在结构中调用函数?我试试这个:

抛出异常:“无法在 DLL 中找到名为 'ClientsAddUser' 的入口点”。

我想如果这个函数不在结构中,我不会抛出异常。

0 投票
2 回答
152 浏览

c# - 如何使用 PInvoke 编组为 I8 类型?

我有一个 UInt32 值,我想使用 InterOpServices 传递给外部 dll。

非托管代码的原型是:

调用代码是:

我想作为 I8 类型传递给对象值“myValue”。

如何才能做到这一点?

0 投票
2 回答
1650 浏览

.net - Marshal.Copy vs ReadProcessMemory / WriteProcessMemory win32 api - 在同一个过程中

我想知道是否有人可以概述在 Windows .NET(C#/VB.net)应用程序中使用ReadProcessMemory/ WriteProcessMemoryoverMarshal.Copy来读取/写入应用程序进程的内存(而不是其他内存)的主要区别、优点和缺点过程)。特别是对于涉及进程内存中任意地址的操作以及将内存块作为字节数组处理(即读/写原始数据)。

在/Marshal.Copy工作的所有情况下都可以工作,还是更具限制性?ReadProcessMemoryWriteProcessMemory

的实现是否在内部Marshal.Copy使用ReadProcessMemory/ WriteProcessMemoryAPI?

澄清一下:我说的是读取/写入调用(拥有)进程的内存,而不是其他进程的内存!

谢谢。

0 投票
1 回答
1683 浏览

c# - 在 C# 中创建 Word 文档

我正在尝试使用 Microsoft Office 互操作创建 Word 文档。该文档应包含一张图片和下面的一些表格内容。但是当我添加内容时,它并没有按照我需要的方式添加。

我在下面提供了示例代码。

0 投票
1 回答
614 浏览

c# - 在 C# 中与 C/C++ 例程交互会导致 rip

我有一个供应商的 API 调用,我想在我的 C# Windows 窗体应用程序中使用它。问题是,无论我尝试什么P/Invoke,我都会在线路上崩溃,说明调用使堆栈不平衡。我尝试与供应商合作,但他们没有 Visual Studio 2012,也没有任何 C# 或.NET经验,经过几次来回电子邮件,他们基本上解决了问题。

这是他们的官方 C/C++ 声明

这是我尝试过的最近的 P/Invoke DLLImport 行。

这是实际的错误消息:

主题行:检测到 PInvokeStackImbalance

调用 P/Invoke 函数 '' 使堆栈失衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 P/Invoke 签名的调用约定和参数是否与目标非托管签名匹配。

我尝试了各种方法,甚至设置了一个 void 返回类型。我尝试不使用返回类型。我尝试代替 Strings、StringBuilders 和 IntPtrs。无论我尝试了什么,都没有任何效果。

在阅读 Stack Overflow 上的一篇文章后,我向供应商提到返回字符串是危险的,永远不应该这样做。他们的回应是:

“该页面上提到的字符串返回问题不适用于我们的函数。它们返回指向静态分配字符串的指针,因此您不需要释放它(并且不能尝试这样做)。看起来像“UnmanagedType.LPStr”应该可以工作(尽管 IntPtr 的东西也应该可以工作,通过适当的转换或转换)。

更新#1:正如评论中提到的,在这篇文章之前,我一直在使用 uint,而不是 ulong。我只是认为我让比较看起来更好。uint 和 ulong 都不起作用。

更新 #2:也许给出实际的函数名称会有所帮助。它是犰狳 CreateCodeShort3A。展望未来,我使用的是纯 .NET,但我仍然需要与之交互,只是目前还不太可能。不仅如此,这个问题让我很好奇为什么我不能解决像 P/Invoke 这样看似简单的问题。毕竟,有多少种变化?(不是一个严肃的问题)。