问题标签 [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.
c# - 如何在 C# 中引用 .inl 和 .h 文件
更新1:
我想知道是否可以引用 .lib 文件,但似乎不能。如果这是真的,而且我没有 C++ 项目的源代码,我该如何使用它的方法?顺便说一句,我正在使用 FastCV 库。
我遇到了需要从 C# 代码调用 C++ 方法的情况。C++ 生成的文件结构:
我知道如何从 C# 调用 C++ 方法:
但我认为 .h 和 .inl 文件也需要包含在我的 C# 项目中。那么如何包含它们呢?
非常感谢。
c# - 从 IntPtr 创建位图
我试图弄清楚如何使用有点不太清楚的 USB Video Camera API(至少它似乎依赖于开发人员以前的知识,而且我认为我不理解“全貌”,双关语)。
我有以下成功接收数据的事件处理程序,目前我只能打印到控制台:
这给了我这些结果:
因此,这与图像尺寸(1280 x 960)一致,1228800 是像素数(缓冲区大小),1
for pixel format 表示PIXEL_FORMAT_08_MONO_OR_RAW
按照相机 API 像素格式枚举(这也与此 BW 相机一致)。
我的问题是:
我怎样才能获取这些信息并
System.Drawing.Bitmap
用它创建一个对象?
我已经尝试过了,但没有成功(显然灰度图像实际上没有被索引......):
这最终会产生“通用 GDI+ 错误”。
c# - 消息 c# 上的 InteropServices 触发
长期读者,第一次在这里发布海报:)
我目前正在尝试学习如何使用互操作,并且想知道我是否可以以某种方式设置一个程序(程序 A),为另一个程序(程序 B)的弹出菜单添加一个附加选项。
编辑:程序 B 不是我的程序 I,所以我无法直接控制它。基本上程序 B 是我想添加附加功能的架子程序。
我想要实现的是以下
- 用户启动程序 A
- 用户启动程序 B
- 用户右键单击一个弹出菜单的对象(在程序 B 中)
- 用户选择选项 id 6(在程序 B 中)
- 程序 A 注意到这一点
- 程序 B 调出另一个弹出菜单(在程序 B 中)
- 程序 A 在程序 B 内的此菜单中添加了另一个选项
- 如果用户选择这个新选项,它会调用程序 A 中的一个函数。
这甚至可以通过 InterOp 实现吗?
c# - C# DllImport 未在上下文中找到,但 Interpor 服务绑定在
我的编译器出现问题,无法导入 kernel32.dll,尽管我使用的是 System.Runtime.InteropServices。这是代码:
它抛出一大堆语法错误和“在当前上下文中找不到“DllImport”。”
谢谢你的帮助。
c# - 从 PowerBuilder 调用 .NET 程序集(向 COM 公开 .NET Framework 组件)
这里是编程环境。
- 框架:ASP.NET 框架 4
- 语言:Visual C# 2010,PowerBuilder 12.5.2 Build 5609 于 2014 年 1 月 2 日 01:29:51 构建
这是场景。
我正在创建一个 PowerBuilder 应用程序,它会启动一个带有多行编辑文本框的简单窗口,您可以在其中键入一些内容并单击一个按钮以加载一个 C# COM 类,该类检查拼写错误并将值返回给 PowerBuilder应用程序的文本框。
C# 类库.cs
C# MainWindow.xaml
C# MainWindow.xaml.cs
从 main 中的命令按钮单击类型 cb_1 的 PowerBuilder 事件
用于 main 的 PowerBuilder 实例变量
到目前为止,我想出的解决方案一直表现得很奇怪。从 PowerBuilder 应用程序中单击该按钮仅在启动 PowerBuilder 或部署的可执行文件后起作用一次,并且在再次尝试再次单击该按钮时将给出以下消息:
PowerBuilder 应用程序执行错误 (R0035)
应用程序终止。
错误:在 main 的对象 cb_1 的单击事件中,在第 11 行调用外部对象函数 checktext 时出错。
我应该从这些代码中更改什么以使其每次都能正常工作?
c - 在 VB.NET 中修改 C 结构
我试图在我的 VB.NET 应用程序中使用别人用 C 编码的 DLL。我的 VB.NET 应用程序向 DLL 发送一些回调指针,然后 DLL 回调我的 VB.NET 应用程序内的函数。
DLL 在 VB.NET 中调用一个函数并传递一个 C 结构的指针。我的 VB.NET 应用程序必须修改结构值,因此 DLL 可以使用新的结构值。我不能修改 DLL 的代码,因为它是别人的 DLL。
我的 VB.NET 结构定义是
我的 VB.NET 委托被声明为
vb.net 将 vb.net 委托发送到 C DLL
我的 VB.NET 函数声明为
当函数结束时我得到以下错误,没有别的。
我尝试了不同的代码,例如Marshal.AllocHGlobal
或将函数声明为
即使代码编译得很好,错误是由于 Marshal.StructureToPtr 不知何故,因为如果我将代码更改为如下代码,我不会收到任何错误,并且 DLL 会获得新值。唯一的问题是我必须手动计算 , 等的偏移report.input(0)
量report.input(1)
。
任何想法为什么代码失败?或者更简单的方法来修改从 DLL 发送的结构?
c# - 在 C# 中读写 C++ 动态数组(InteropServices)
我有一个 C++ 类,它有一个 header(matrixheader.h),这样:
类在(matrixbody.cpp)中定义如下: 它内置于Win32平台。
我已经为类制作了一个包装器,如下所示(matrixwrapper.cpp):包装器也是在 Win32 平台中构建的。
我将类导入 C# 并尝试从 C# 调用 C++ dl 方法:
但是当我尝试从 C# 运行 C++ dll 方法时,我收到以下错误
1//试图读取或写入受保护的内存。这通常表明在 x64 中运行 C# 代码时其他内存已损坏。
2//在x86 Active/x86或AnyCPU平台上运行时尝试加载格式不正确的程序。
问题:
1//上面的代码有什么问题?
2//考虑到我的最终目标是在C++中创建一个二维动态数组并在数组中读取/写入数据,例如C#上面matrixheader.h文件中的一个double**mat?还有其他方法可以实现吗?它 ?
c# - 带有 C++ dll 的 C# IteropServices - 在 excel 中工作?
我有一个 C++ dll,我正试图在我的 C# 项目中工作(我对 C++/C 一无所知,但确实有源代码并且可以在 VS2013 中打开和构建它)
该 dll 附带 Excel VBA 中的工作示例,但我无法让它在 C# 中工作。
我不断遇到的错误是......
附加信息:对 PInvoke 函数 'RMTest!RMTest.PInvokeTest::encode_eib_d' 的调用使堆栈失衡。这可能是因为托管的 PInvoke 签名与非托管的不匹配
我的 C# 测试代码如下...
作为参考,Excel中的工作示例,VBA如下......
C++ dll中的相关代码片段(据我所知)如下......
标题(.h):
.cpp
.def:
我已经在输入参数上尝试了 MarshalAs 等的各种组合以及尝试使用 StringBuilders 而不是字符串,但听起来好像对从一个到另一个的方法签名不满意。
令人沮丧的是它在VBA中工作。
如果您需要更多信息,请询问。
谢谢。
comexception - 应用程序中的 COM 异常
我正在尝试升级内部应用程序,基础设施将从 2008 年迁移到 windows server 2012 年。该应用程序从模型模板构建演示文稿。
我不断收到看起来与 Interops 相关联的附加 COM 异常,有没有人遇到过类似的事情。
PowerPages (Office 14.0)
文档:模型.ppt
命令:{SET PrevPeriodEnd user.PreviousPeriodEnd(PGFromDate)}
错误:
~~ 调用堆栈页面 6.9.1 (Build 021)~~
未找到成员。(来自 HRESULT 的异常:0x80020003 (DISP_E_MEMBERNOTFOUND))
堆栈跟踪:
在 Microsoft.Office.Interop.Word.ApplicationClass.Run(字符串 MacroName、Object& varg1、Object& varg2、Object& varg3、Object& varg4、Object& varg5、Object& varg6、Object& varg7、Object& varg8、Object& varg9、Object& varg10、Object& varg11、Object& varg12, Object& varg13, Object& varg14, Object& varg15, Object& varg16, Object& varg17, Object& varg18, Object& varg19, Object& varg20, Object& varg21, Object& varg22, Object& varg23, Object& varg24, Object& varg25, Object& varg26, Object& varg27,对象& varg29, 对象& varg30)
在 Pages.PowerPages.Evaluate.DoEvaluate(集合 cExpression)
在 Pages.PowerPages.Evaluate.Eval(字符串 sExpression)
在 Pages.PowerPages.Commands.HandleSet(字符串和 sStr、形状和 oShape、TextRange 和 oRange)
在 Pages.PowerPages.ProcessFile.ProcessShape(Presentation& oPresentation、Shape& shp、String& sOpenStr、String& sCloseStr、Boolean& bExit、Int32& nSlideID、Int32& nSlidesToReset、Boolean& bAgenda)
在 Pages.PowerPages.ProcessFile.ProcessPresentation(Presentation& oPresentation, String& sOpenStr, String& sCloseStr, Boolean& BMaster, Boolean& bAgenda)
在 Pages.PowerPages.modAmain.GenerateModel(String[]& aSelectedComponent, Boolean& bNormal)
在 Pages.PowerPages.modAmain.Generate2(布尔 bJobRun)
在 Pages.PowerPages.ComPowerPoint.Generate(字符串 sThreadID、Int32 nJobID、字符串 sPortcode、字符串 sManager、字符串 sBusinessUnit、Int32 nJobAccountStatusID、对象 oBatch、字符串 sOutputFolder、应用程序 oPowerPointApp)
~~~~ 附加信息 ~~~~
异常类型:COMException
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
计算机数据:
操作系统名称:Microsoft Windows Server 2012 R2 Standard
版本:6.2.9200.0
平台:Win32NT
物理内存 - 总计:4294430720,可用:2845433856
虚拟内存 - 总数:2147352576,可用:1652203520
c# - Excel 中带有 interopServices C# 的 COMException
在某些机器上安装程序时,我遇到了一个非常烦人的问题,我开发了一个 C# 应用程序,一切正常,当然我在另一台机器上测试它没有问题,但是当我在我的客户端机器上安装它时,会出现以下问题:
System.Runtime.InteropServices.COMException (0x800A03EC):HRESULT 异常:System.RuntimeType.ForwardCallToInvokeMember 处的 0x800A03EC(字符串成员名称、BindingFlags 标志、对象目标、Int32 [] aWrapperTypes、MessageData 和 msgData)在 Microsoft.Office.Interop.Excel.Range .set__Default(Object RowIndex, Object ColumnIndex, Object ) at SchoolMgmt.certificate_succession.sum_operation()
由于程序与 Excel、Office Microsoft 通信(我尝试安装另一个 Office 版本但没有成功)。
我已经搜索了很多解决方案,但没有任何效果,因为它声称问题只是以下路径中的权限问题
C:\Windows\System32\config\SystemProfile
为什么程序在我的测试机器上运行顺利且成功,但在我的客户的机器上却没有,这真的让我发疯!
请有任何建议。