问题标签 [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 投票
1 回答
437 浏览

c# - 从传递回完整对象模型的非托管 C++ 调用 C# 方法

我在 C# 中有类似于以下内容的内容:

我想将此对象模型传递给非托管 C++。即从非托管C++ 代码调用,例如'GetClassA() : ClassA'。

到目前为止,我已经设法将单个对象或对象数组从托管 C# 传递到非托管 C++(使用 COM/CCW),但还没有通过其中包含 ClassB 的 ClassA。

我的问题是:

  1. 如何将 ClassA 传回其中的 ClassB 数组?
  2. 到目前为止,我只能从 C# 传回结构。我上面的例子是我真正想要传回的类。即对数据的引用。

澄清一下,非托管代码将调用托管代码。

0 投票
1 回答
941 浏览

.net - 如何解决注册/使用 .NET COM Callable Wrapper DLL 的问题?

我编写了一个 C# .NET Com 可调用包装 DLL。我使用 StrongName 对其进行了签名,并使用 64 位 regasm.exe 注册了代码库和类型库。使用 64 位 OleViewer 可以看到注册和所有控件的方法。但是,当我尝试使用来自 64 位 \Windows\System32\cscript.exe 的控件时:

这会产生错误:

Microsoft VBScript 运行时错误:ActiveX 组件无法创建对象:“MyCompany.LoggerControl”

使用来自 Sysutils 的 ProcMon 来追踪它,我发现:

1:41:44.8295486 PM cscript.exe 24028 RegOpenKey HKCR\MyCompany.LoggerControl
NAME NOT FOUND 所需访问权限:读取

但是,该键存在于 Regedit 中。调用进程从提升的命令提示符运行。如果这是一个安全问题,错误不应该是“拒绝访问”而不是“未找到名称”吗?

还有什么其他工具可以追踪这种类型的 COM 控件注册错误?

0 投票
2 回答
187 浏览

.net - 在 PLC 组件中使用 COM 可调用包装器

我有一个基于 Motorolla 的可编程逻辑控制 (PLC) 设备,我使用 IEC-61131 结构化编程语言在其中编写代码。问题是我有一些复杂的计算要做,所以我试图在 COM Callable Wrapper 中编写代码。所以问题是,是否可以访问在.NET 框架上开发的 CCW 中编码的功能以访问基于摩托罗拉的 PLC 设备?

所以简而言之,我还要问的是,这个 CCW 是否可以在非 .NET Framework 设备上访问?

非常感谢您提前。

问候伊尔凡

0 投票
0 回答
663 浏览

.net - COM Callable Wrapper 适用于 .NET 2.0 但不适用于 .NET 4.0

我编写了一个概念验证 COM 可调用包装器,以便用新功能替换现有的 COM 组件。我的项目的一个限制是我无法更改调用代码;调用代码应该不知道 COM Callable Wrapper 的存在。如果调用代码是 .NET 2.0,我创建的小型概念验证解决方案可以工作,但如果调用代码在 .NET 4.0 中,则会失败并出现 InvalidCastException。有人可以帮我发现这个 .NET 4.0-specific 的原因InvalidCastException吗?

COM 可调用包装器:

调用代码(在行抛出异常new):

0 投票
2 回答
1192 浏览

.net - 从 .NET 调用 VB6 表单时,表单交互被阻止?

我有一个编译为 VB6 exe 的 VB6 项目。

它有一个简单的形式作为它的启动对象。

它通过 regasm 的 .NET dll 启动一个 .NET 模态表单,将回调 COM 接口 (IHandler) 的实现传递给它。

.NET 回调 VB6 中的 IHandler 实现。

VB6 尝试使用 vbModal 显示一种新形式。VB6 表单被阻止交互,因为模态 .NET 表单仍然可见。

有没有办法解决这个问题或建议的方法?

我尝试在新的(STA)(托管)线程上回调 VB6,但是当它尝试执行 MyCallbackForm.Show vbModal 时,我得到“无效的过程调用或参数。”......我认为这与事实有关我正在回电一个新线程...


更新:如果我将我的 VB6 项目类型设置为 ActiveX exe,我能够成功地在新线程上进行回调并以模态方式显示我的 VB6 表单......但是一旦我这样做了,我似乎失去了回调上的线程 - 制作从 VB6 到 .NET 的后续调用导致了跨线程异常。我猜这与使用 ActiveX exe 时的线程模型有关......

0 投票
2 回答
2400 浏览

eclipse - 使用 CounterClockwise 和 Eclipse 在 Clojure REPL 中进行评估

我通常使用 Emacs,但受到启发再次尝试 CCW + Eclipse。我有一个 Clojure 测试项目,其源文件 src/user.clj 包含以下内容:

我有一个 REPL,我从 Window->Show View->Other->Clojure Views->REPL 开始。

当我选择 println 表达式(所有的 '(println "hi")')并按 Command-enter 时,表达式本身会在 REPL 窗口中回显,但不会出现输出。类似于 '(take 10 (range))' 之类的表达式。

如果我直接在 REPL 中输入表达式,然后按 Enter,我会得到

但似乎没有任何额外的评估输出。

感谢您的任何想法。我查看了文档,但没有明显的发现。

0 投票
1 回答
75 浏览

c# - 如果 .net DLL 周围的 com 包装器使用了更多依赖的 .net DLL,是否应该将它们放在 GAC 中?

如果托管 DLL 使用一个或多个托管 DLL,并且围绕托管 DLL 构建了一个 com 包装器,那么所有相关的托管 DLL 都应该放在 GAC 中。在类似的情况下,我收到“无法找到程序集......”。

提前致谢。

0 投票
2 回答
4693 浏览

sorting - 在 CCW 或 CW 方向上对多边形的顶点进行排序

我有一组定义多边形的边和顶点(不一定是凸的)。顶点和边是随机顺序的,我想按顺时针(或逆时针)方向对该多边形的顶点进行排序/排序。

知道如何实现吗?

0 投票
2 回答
958 浏览

clojure - 如何在 Ring 处理程序中打印到 REPL 窗口?

println似乎在处理程序中不起作用。如何写入 REPL 窗口?

我正在逆时针使用日食。

编辑:这看起来像nrepl 问题(future (println "foo"))很好,但没有输出(.start (Thread. #(println "foo")))

0 投票
0 回答
186 浏览

clojure - 无法逆时针调试

我正在运行 Clojure/Eclipse/逆时针。当我在 core.clj 中插入断点时,只有一行点获得了一条小尾巴。那是第 29 行。这与第 29 行上的代码无关。当这个带尾的点出现并且我尝试运行/调试/调试配置/调试时,对话框超时并显示消息“等待新的 REPL 进程确认时间到”。此外,焦点移至文件 clojure.core 的选项卡。该文件的第 29 行是下面以“cons”开头的行。它是 cons 定义的最后一行。它也是 clojure.core 中出现“.clojure.lang.RT”的第一行(下面还有其他类似的行)。在调试窗口中,我看到“Thread [main] (Suspended) 并紧接在“core.clj line: 29”下方。看起来问题出在 .clojure.lang.RT 上。

(如果我在任何其他行中插入断点,我只会得到一个点,然后 REPL 开始,但断点被忽略。)