问题标签 [ccw]

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 投票
0 回答
191 浏览

c# - 在 javascript 中使用 CCW copmonent 给出错误未定义

接口实现类

界面

Javascript

我已经创建了 windows 窗体类类型库。DLL 业务逻辑必须在 Asp.net 页面中使用。为此,
在 Wrapper 类中生成了一个 CCW Wrapper 类,为函数声明创建接口。并在包装类中实现接口函数。使所有功能 [comvisible=true]

在 GAC 中注册 dll。现在必须在 asp.net 页面中使用所以创建了 ActiveXObject。它给了我例外“未定义”

0 投票
1 回答
402 浏览

c# - 如何从 dll 依赖创建 CCW

我正在为 C# 类库创建一个 CCW 组件,该库包含一些第三方 DLL。

  1. 此用户控件必须在 Classic Asp 页面中使用

  2. 为此目的生成了一个 CCW Wrapper 类

  3. 在 Wrapper 类中为函数声明创建接口。

此接口和类包含 C# 类库 DLL 和第三方 DLL 的引用

界面

接口实现类

经典 ASP 中的 JavaScript

在将此 DLL 注册到 gacutil /i 并尝试将这些 dll 访问到我的 java 脚本代码中之后,它给了我一个“未定义”错误。我不知道这会有什么问题。为此必须将第三方 DLL 以及 C# 类库安装到 GAC

0 投票
0 回答
306 浏览

c# - C++ COM CoCreateInstace() 返回 -858993460

我有一个第三方 .NET dll,我想将它公开给原生 C++ dll,所以我用 C# 编写了一个包装 dll;但是在原生 C++ dll 中,每次执行到 CoCreateInstance() 时,都会返回这个 -858993460 错误;

----------------------下面是程序的结构-----------------

ThorDetectorSwitch.dll(本机 C++ dll)-> MCLWrapper.dll(COM C# dll)-> mcl_RF_Switch_Controller64.dll(第三方 .NET dll)

----------------------下面是我的一些代码---------- -

C# 包装器 dll(MCLWrapper.dll,COM 可调用包装器 dll):

ThorDetctorSwitch.dll(调用 CCW MCLWrapper.dll 的本机 C++)的构造函数:

我用来注册 MCLWrapper.dll 的命令行

并成功返回注册表。

错误:错误发生在

我不认为这条线是完全执行的。

有人有什么想法吗?非常感谢。

0 投票
2 回答
984 浏览

.net - 如何诊断 COM 可调用包装对象创建失败?

我正在使用以下命令创建一个 COM 对象(来自本机代码)CoCreateInstance

实际上,我在 Delphi 中,这意味着我调用了辅助函数:

大多数情况下,此功能会成功。但有时,在同一个可执行文件中,在同一个进程中,调用CoCreateInstance失败并显示:

再次调用该函数可能成功,也可能失败。没有(明显的)押韵或理由。

这不是我的 COM dll

如果这是我编写的普通COM dll,我会开始放入OutputDebugStringDLL_ATTACH当有人尝试调用时DllGetClassObject,我会确认 COM 正确加载了我的 DLL,并且它正确地要求实例化一个类。

不幸的是,它不是 COM dll;这是一个 .NET 程序集 dll。而且 COM 子系统不会简单地 “加载”我的dll. 相反,COM 被指示加载mscoree.dll

mscoree.dll导出所需的GetClassObject功能。mscoree.dll回来的也是E_FAIL,不是我。在我的开发机器上从未发生过故障,但在客户机器上总是间歇性地失败。

如何启用 .NET 日志记录?

问题是,因为mscoree.dll那个返回E_FAIL(而不是任何有用的东西):我如何让它告诉我问题是什么?

例如,似乎唯一遇到故障的客户(除了是唯一大量使用 COM 对象的客户)碰巧在 Windows XP 上。也许他们遇到了 .NET 框架(版本 4 之前)中的已知错误,您无法将不同版本的 .NET 运行时加载到同一进程中

这样做会引入一个 CLR 版本依赖关系,它可能与宿主进程期望的 CLR 版本冲突

在使用 COM 包装器时,MSDN 上的一篇文章中也提到了这种故障模式;您可以选择指定 a clrVersion

如果已经加载了另一个版本的 CLR,并且可以在进程中并行加载指定的版本,则加载指定的版本;否则,使用加载的 CLR。这可能会导致加载失败。

如果这我在 Windows XP 或 .NET 框架上的早期版本中间歇性加载失败的原因,我该如何mscoree.dll告诉我呢?

如果原因是其他原因,我如何让 .NET 告诉我?

0 投票
1 回答
553 浏览

c# - 从delphi程序调用时COM Callable Wrapper不工作

我被要求为旧的 delphi 程序创建一个 .Net dll。我正在尝试使用 COM 可调用包装器来执行此操作,但是当它尝试加载 dll 时我不断收到错误消息(很笼统,例如“我无法加载 dll”)。以下是技术文档的内容:

这是我的 CCW 代码:

我还在运行 delphi 程序的计算机上运行此命令“regasm /tlb:ComCallableWrapper.tlb ComCallableWrapper.dll /codebase”。

我一直在谷歌上做一些关于 delphi 如何调用 dll 上的函数的研究,我发现至少有两种方法:

看起来 COM 的工作方式有点不同。有没有办法让我的 CCW 像第一种方式一样工作?

问候。

0 投票
1 回答
4085 浏览

c++ - ccw算法解释

我在理解 ccw(逆时针)算法时遇到了一些麻烦:

此代码用于查看两条线是否相交:

intersect 函数里面的代码我能看懂,但是ccw 函数里面的代码我不是很懂。

为什么不使用叉积?

0 投票
0 回答
90 浏览

c# - 如何向 .net Com Callable Wrapper 添加帮助?

我们有一个 .net 程序集,它也需要被 .net 敌对但 COM 友好的语言/开发环境使用。.net 程序集使用标准 xml 注释功能嵌入了方法/属性/类帮助。所需要的是一种将这种帮助从.net API 传播到程序集的COM Callbable Wrapper 的用户的方法,......在更新.net API 时无需任何额外的维护。

这似乎是一件显而易见的事情,但不幸的是,MS CCW 生成不会生成帮助文件或识别任何程序集属性来指定帮助文件链接。显然,像 Sand Castle 这样的工具可以从它的智能注释生成一个程序集的帮助文件,但问题仍然是如何将 CCW 链接回该帮助文件。

我认为通过以下方式在逻辑上可能是可行的:

1) 从程序集中生成类型库

2)将类型库转换为IDL(如何?OLEView 似乎可以做到)

3)在IDL文件中添加helpfile、helpcontext和helpstring属性:

4) 从 IDL 重新编译 TLB

5)使用引用帮助的TLB重新生成CCW

不幸的是,从头开始处理该过程(尤其是 a. 和 b.)将比我们节省的工作量更多,而不是创建和维护围绕 CCW 手动创建的环境特定包装器,其中包括 .net 帮助的手动副本。

有没有人有任何想法或知道已经解决此问题的任何工具?

0 投票
1 回答
68 浏览

c# - .NET CCW:WPF 表单停用问题

我有一个混合应用程序 - VB6 应用程序可以通过 CCW 机制调用一些 .NET WPF 表单。如果这些表单通过方法“ShowDialog”从 CCW 显示,则这些表单正确处理用户输入(键盘+鼠标),包括 TAB 导航。如果我使用非模态方法“显示”,我会得到类似的行为:.Net 表单通过使用导航键(TAB、箭头键)停用,并且根 VB6 表单被激活。请给我建议如何防止这种行为。

0 投票
1 回答
122 浏览

c++ - 强制 CCW 垃圾收集

在 C++ 未损坏的项目中,外部 (*) 托管 DLL 通过COM 可调用包装器 (CCW)使用(向 RegAsm 注册)。但是存在内存泄漏:托管内存从未清理过。

背景:C++ 项目是一个古老的 32 位程序。它加载了几个 DLL,其中一些是托管 DLL(用 C# 编写)。

在一个最小的例子中,.Net DLL 工作正常。也许 GC 对以不同方式使用托管代码感到困惑?

如何强制 CCW 的垃圾收集?

现有 Wrapper 中的以下代码不起作用:

“FinalReleaseComObject”中的 ArgumentException -> 没有 COM 对象。在调试器中,对象“obj”看起来不错。结构、数据,一切OK。

以下代码将运行,但不起作用:

(*我无权访问源代码)

0 投票
0 回答
33 浏览

plc - 如何将 PLC 代码从 Allen Bradley Micro820 备份到 SD 卡?

我在 CCW-Connected Components 工作台中进行了代码更改并将其下载到 PLC。有没有办法直接备份 PLC 的 SD 卡插槽中的代码?