jjzjj

windows - regsvr32,我应该在重新注册之前注销吗?

场景:我在c:\program.dll中的客户端计算机上安装了COMdll,并调用了以下命令进行注册:regsvr32"c:\program.dll"我用新版本更新了dll,在与安装“c:\program.dll”相同的目录中。疑问:在注册新版本的dll之前,是否需要先注销旧版本?regsvr32"c:\program.dll"/u如果是,为什么? 最佳答案 您应该使用现有DLL的DllUnregisterServer函数注销旧版本。如果正在安装的新版本设置了相同的注册表项,这不会有什么不同,但请记住,用户可能会降级到未实现特定类的

c++ - 将 TLB 文件提交到存储库

我正在将TLB文件导入到我的项目中,因为我使用的是COMDLL。TLB文件是一个二进制文件,我需要用它来编译我的源代码,所以我想知道将它提交到存储库是否是一种好的编程习惯。 最佳答案 是的,可以将二进制文件放在源存储库中。有时称为“不要将二进制文件放入源存储库”的规则最好称为“不要将临时文件或作为编译结果的文件放入源存储库”'.基本上任何不能从其他文件生成但与项目本身相关的东西(即没有编辑器首选项文件)都可以放在存储库中。 关于c++-将TLB文件提交到存储库,我们在StackOverf

windows - 是什么决定 RegisterTypeLib 是写入 win32 还是 win64?

我正在处理两个基于ATL的COM项目。两者都实现DllRegisterServerSTDAPIDllRegisterServer(void){//registersobject,typelibandallinterfacesintypelibreturn_Module.RegisterServer(TRUE);}最终调用::RegisterTypeLib(pTypeLib,bstrPath,szDir);在atlbase.h:6516中。但由于某种原因,此调用使其中一个项目创建HKEY_CLASSES_ROOT\TypeLib\\\0\win64在Windows732位上使用regsv

c++ - 未提供时从 COM+ dll 获取 IDL(用于 TLB)

我有一个.dll,其中包含一些带有特定/自定义接口(interface)的directshow过滤器(COM)。大多数第3方directshow组件包含可用于跨环境通信(C#typelib导入)的嵌入式.tlb文件。我不愿意尝试手动创建c#所需的接口(interface),因为没有提供idl/tlb文件。是否可以从COM.dll生成一个tlb(或者至少是一个idl,我可以通过MIDL编译它)? 最佳答案 是的,可以对IDL(或非常接近它的东西)进行逆向工程/反汇编。您需要做的是给自己一个新的C++控制台项目,它提供默认代码#incl

c# - 在非托管 c++ dll 中使用托管 c# dll

非托管C++.dll如何知道托管C#.dll的位置?一些背景:我有一个导入类型库(.tlb)的c++.dll,在其中一个c++函数中,我实例化了一个指向c#.dll中函数的指针。然后,使用该指针,我可以在C++中调用C#函数。我想知道c++.dll是如何知道c#.dll在哪里的?此外,是否有更好的方法来进行此类编码?.tlb是否需要与c#.dll位于同一目录中? 最佳答案 完成上述任务的一种方法是使用regasm命令向MicrosoftWindows注册表注册C#dll文件。此命令EXE包含在VisualStudios的发行版中。命

c# - 如何用 C# 或 C++ 读取 COM TypeLib?

我的公司已经创建了几个COM对象,并且他们在.NET中愉快地使用它们。但是现在,我们的客户想换成Java。我认为将JACOB或j-interop(我不确定是哪一个)用于某些任务会很有趣,但生成的代码非常难以管理。所以我想写一个工具,可以读取COM库的TypeLib,然后生成Java包装类来隐藏所有那些难以管理的代码。我是COM领域的新手,不知道如何获取描述COM对象的接口(interface)、方法和参数的信息。我读到了一个叫做TypeLib的东西,但我不知道如何阅读它。我如何从中获取信息? 最佳答案 官方API可在此处获得:Typ

c++ - 使用 tlb 文件的 COM 自动化

将我视为Windows环境和COM编程的新手。我必须自动化应用程序(CANoe)访问。CANoe将自己公开为COM服务器并提供CANoe.h、CANoe_i.c和CANoe.tlb文件。任何人都可以指定如何编写C++客户端,以访问应用程序的对象和功能。另外,请说明如何从C++访问tlb文件中的代码。 最佳答案 VisualStudio有很多内置支持,可以将类型库导入C++项目并使用这样定义的对象。例如,您可以使用#import指令:#import"CANoe.tlb"这将导入类型库,并将其转换为头文件和实现文件-它还会导致实现文件与

windows - 使用 WiX 生成和安装 Typelib

在askingaboutwhatVisualStudiodoestoregisteraCOMLibrary之后,很明显VS为COM注册做了两件事:注册COM库创建并注册类型库VisualStudio似乎使用regasm.exe进行注册。对于第一部分(直接COM注册),使用tallow或heat(WiX2.0或WiX3.0)似乎可以正确获取所有基本COM注册信息。但是,tallow/heat似乎没有设置类型库安装。可以使用WiX安装程序和regasm.exe创建自定义操作来执行此操作,但对于基于Microsoft安装程序的安装程序而言,调用自定义操作并不是最佳做法。经过进一步研究,msi

.net - 使用 WiX 安装程序复制 Visual Studio COM 注册

曾几何时,一位年轻、天真的工程师认为将他的应用程序的某些功能分离到一个用C#编写的COM组件中是个好主意。VisualStudio拥有做到这一点的所有工具,对吗?.NET实际上就是为此而生的,对吧?哈!他说,这会很容易。我将对组件进行适当的分离,使业务逻辑远离前端,并且使用COM,我将能够从任何地方使用它!他兴高采烈地查看了registerforCOMinterop项目属性中的复选框,公开他想要的类,然后继续前进。呵呵,试炼做出这样的选择。现在年轻的工程师更有经验,现在不会希望任何人都这样。然而,重担已经压在了他的肩上,重担依旧沉重。他想减轻负担。随之而来的是WiX,这是一种从XML生

python - 我必须安装什么来解决 Could not find any typelib for GtkSource, Cannot import : GtkSourceView, cannot import name GtkSource

我正在尝试为来自https://bugzilla.gnome.org/show_bug.cgi?id=680569的meld应用补丁我自己,我遇到了这个问题:$gitclonegit://git.gnome.org/meld$cdmeld$pythonsetup.pybuild$bin/meld2014-01-1116:30:44,736ERRORroot:CouldnotfindanytypelibforGtkSourceCannotimport:GtkSourceViewcannotimportnameGtkSource我对Python知之甚少,例如不知道(还)什么是Python的