Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Heat.exe无法从64位COM DLL获取TypeLib信息_Com_Wix_Win64 - Fatal编程技术网

Heat.exe无法从64位COM DLL获取TypeLib信息

Heat.exe无法从64位COM DLL获取TypeLib信息,com,wix,win64,Com,Wix,Win64,我有一个仅64位的COM DLL,我想使用heat.exe从中获取typelib信息。但是当我尝试这样做时,我得到了错误193(错误的可执行格式)。heat.exe仅为32位,不能与64位可执行文件一起工作?我在我的机器上只找到一个版本的heat.exe 谢谢。根据您尝试执行的操作,可能会有解决方案,如果您只需要添加Win64属性,您可以通过candle.exe执行此操作,请参阅 否则,您可能还发现了一个尚未解决的已知问题。我在尝试获取vb6和非.net库时遇到了类似的问题。你能试一下加热吗 -

我有一个仅64位的COM DLL,我想使用heat.exe从中获取typelib信息。但是当我尝试这样做时,我得到了错误193(错误的可执行格式)。heat.exe仅为32位,不能与64位可执行文件一起工作?我在我的机器上只找到一个版本的heat.exe


谢谢。

根据您尝试执行的操作,可能会有解决方案,如果您只需要添加Win64属性,您可以通过candle.exe执行此操作,请参阅


否则,您可能还发现了一个尚未解决的已知问题。

我在尝试获取vb6和非.net库时遇到了类似的问题。你能试一下加热吗 -scom-o


如果这不能解决问题,您可以将heat命令粘贴到此处。

不幸的是
heat.exe确实是32位的,因此只能获取32位COM注册:


然而,64位
heat.exe扩展在这里讨论:代码可以在这里找到:

在我的情况下,我需要一个单独的32位和64位COM DLL包。使用32位DLL中的收获对64位版本有效。只需确保生成配置是64位特定的。

如果您可以让警告流动,并且您只有非常少量的文件作为64位DLL,您可以尝试以下操作:

  • 像往常一样运行HEAT.EXE,创建输出文件
  • 编辑文件,并向需要包含的每个文件元素添加SelfRegCost=“0”
例如:

<Directory Id="dir..." Name="MyDLL">
  <Component Id="cmp..." Guid="...">
    <File Id="fil..." KeyPath="yes" 
     Source="...\MyDLLFile.dll" 
     SelfRegCost="0" />
  </Component>
</Directory>


我只需要在我的包中管理一个类似的DLL,它就可以工作了

我试图从该模块获取COM注册信息。幸运的是,在我自己写的时候,我只是简单地将guid和其他东西粘贴到另一个模块的热注册片段中。还有一件事,来自Nir Bar的github,一位著名的计算机专家:-这个组件似乎是由Robert Yang用Roger Orr的输入编写的。我不确定。试一试?它曾经在virustotal.com上有一些“未知产品”警告,但现在看起来没问题。在原始问题上添加了一些注释,也许可以看看。