- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 C++ 应用程序调用 c sharp dll。 Regasm 将我的函数从具有两个字符数组并返回一个 int 转变为一个具有两个 BSTR 和一个长指针作为参数的函数。两个 BSTR 被标记为输入,长指针是我的原始返回值。问题是我的字符数组之一是真实输入,另一个是从 dll 返回的错误信息。是否有标识符让 regasm 知道我的第二个字符串参数实际上是一个输出?在调试时,我验证了第二个参数在 dll 中被更改但没有返回到调用函数。
最佳答案
这确实是 .NET 方法到 COM 方法的正常转换。 BSTR 是标准的字符串互操作类型,它可以非常有力地保证字符串可以跨模块/语言边界正确编码,而不会出现主要的内存管理问题。普通字符串变成 BSTR,ref/out 字符串变成 BSTR*,允许您传回新字符串。与返回类型大致相同,COM 方法必须返回 HRESULT 以指示成功/失败,因此原始返回值必然成为 C# 语言中的 out 参数。
修补这个东西非常是不明智的,有很多方法可以让你大吃一惊。您可以通过应用 [MarshalAs] 属性来强制使用不同的参数类型。 [PreserveSig] 抑制返回值转换。执行此操作时,函数调用不能再跨单元边界进行编码。再次重申,对此要非常小心,尤其是当您想要返回字符串时。这是一个有保证的内存管理问题。在 C++ 中处理 BSTR 或返回值不是问题,您可以在谷歌上搜索大量示例代码。
关于c# - 当我使用 regasm 时,所有参数都输入为输入?那可以改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754189/
我有一个适用于 32 位和 64 位架构的 COM 可见 dll,我用它来将菜单项添加到 Windows 资源管理器上下文菜单。使用“regasm myassembly.dll/codebase”我注
我可以使用 .Net4 RegAsm.exe 对 .NET 2 dll 执行 RegAsm 吗? 我的机器上只安装了 .NET 4,我需要对 .NET 2 文件执行 RegAsm。 最佳答案 是的,你
我输入这个: regasm COMTest.dll /tlb:COMTest.tlb /codebase COMTest 我收到以下错误: An error occurred while regist
我编写了一个 .NET 程序集并使用 Regasm 在我的本地机器上成功注册了它,但是当我尝试在目标服务器中执行此操作时,出现以下错误。 Regasm:错误 RA0000:无法找到输入程序集“完整 d
我有一个 C# COM 组件需要被推出并注册到远程计算机。有谁知道这是否可以通过 Regasm 实现? 最佳答案 你应该试试 psexec/pstools。这是一个链接:http://technet.
如果我想让 .NET 程序集可用作 COM 服务器,我必须添加一组属性,然后使用 regasm将其注册为 COM 服务器。 如果程序集没有使用强名称签名 regasm当使用 /codebase 运行时
我正在 Visual Studio 中构建新类。这些最终生成 DLL 文件,这些文件通过 VS IDE 自动注册。 这些相同的 DLL(只有 DLL 没有 TLB)被传送到客户端,在那里它们通过 RE
我的同事正在尝试通过 RegAsm.exe 注册一些 COM 组件(我编写的),它说他需要管理员权限。他的帐户具有管理员权限,但他没有以管理员身份登录。有没有办法使用他的常规用户帐户并成功完成此任务?
我有一个用 C# 编写的 COM 可见 DLL,我想在 VB6 应用程序中使用它。我有 DLL 的两个主要用例,我想知道 /codebase 选项何时适用以及何时最好在 GAC 中注册。 用例: DL
我在使用批处理文件在网络驱动器上的框架 4 上调用 Regasm 时遇到问题。当 dll 位于本地驱动器上时,它可以正常工作。 消息是无法加载文件或程序集 filename.dll 或其依赖项之一。不
我使用 regasm 在开发计算机上注册了我的一个 dll,如下所示(ASP 应用程序) 在 cmd 提示符下,我导航到C:\WINDOWS\Microsoft.NET\Framework\v2.0.
我们有一个托管 C++ DLL,当用 regasm 注册时,它似乎会向注册表添加一些垃圾类型。在 Blah 类中,任何使用 MyTeam.ManagedAutoPtr 的私有(private)变量都会
好吧,我知道这很具体,但我花了一整天的时间在这上面,所以我真的需要一些合理的解释,这样我的老板和我的妻子就不会解雇我 根据 MSDN : /regfile 开关“为程序集生成指定的 .reg 文件”
我正在尝试使用 RegAsm 注册一个 .dll。它是一个 .NET 2.0 dll。所有类都是公开的,ComVisible 为真。我仍然收到 RA0000:没有注册类型错误。下面是代码和程序集信息。
我们有一个基于spicIE的IE插件,目的是连接一些外部设备。 为了连接到这些外部设备,另一家公司开发了他们的 token 和 DLL。我们需要一些 ActiveX 和 DLL 来通过 token 进
我有一个 .NET 程序集,需要在安装时注册。我注意到注册表在 regasm 时有细微差别直接使用而不是通过 regasm 安装的注册表脚本。 这是我的测试: 我导出原来的HKCR hive,然后运行
简而言之,我构建了一个 C# 类库,它既是 COM 可见的,又是为 COM 互操作而注册的。我已经编译了库,从而生成了 .dll 和 .tlb 文件。 我有另一台运行 VB6 应用程序的机器。因此,我
我想知道是否可以在不使用 RegAsm tool 的情况下注册类型库.这是我的情况,这有望解释我为什么要这样做: 我正在 .NET 中开发一个程序集,它将为我们旧的 VB6 应用程序提供一些现代功能。
部署和注册 .Net 时Excel.dll在另一台计算机上,我收到错误 Can't add a reference to the specified file尝试添加对 DLL 的引用时在 VBA编辑
我有以下问题:.NET 程序集是否可以同时注册到 Regasm 和 Regsvcs?谢谢 最佳答案 这是对该问题的超时回复。但让我解释一下我所意识到的差异。 为了理解这一点,您必须想出 COM 和 C
我是一名优秀的程序员,十分优秀!