Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
C++ 如何使用WiX手动注册64位DLL_C++_Wix_64 Bit - Fatal编程技术网

C++ 如何使用WiX手动注册64位DLL

C++ 如何使用WiX手动注册64位DLL,c++,wix,64-bit,C++,Wix,64 Bit,我正在使用WiX安装一个64位应用程序。我已经知道如何创建一个DLL,但是我很难知道如何注册我安装的DLL,所以我无法获得 "Program can't start because XXXX.dll is missing from your computer. Try reinstalling the program to fix this problem" 错误 我尝试使用heat.exe创建必要的RegistryValue标记,但它与64位DLL不兼容。我用32位编译了一些DLL,并

我正在使用WiX安装一个64位应用程序。我已经知道如何创建一个DLL,但是我很难知道如何注册我安装的DLL,所以我无法获得

"Program can't start because XXXX.dll is missing from your computer.  
 Try reinstalling the program to fix this problem"
错误

我尝试使用heat.exe创建必要的RegistryValue标记,但它与64位DLL不兼容。我用32位编译了一些DLL,并不是所有DLL都用32位,但我仍然无法让heat.exe工作。现在看来,我应该能够手动组合RegistryValue标记,但我不知道它们应该包含什么。我一直在看这个例子,它比WiX文章中的例子复杂得多

我需要什么RegistryValue标记才能向操作系统注册DLL,以便在路径上找到它

编辑:附加上下文

我正在尝试安装一个SDK和一些示例源代码。我将SDK DLL、.libs和头放在\Program Files的文件夹中,并将示例源代码放在桌面上的文件夹中。我在%LIBPATH%上有lib目录,在%include%上有include目录,在%PATH%上有bin DLL目录

然后,我在桌面上有一个文件夹,其中有一个用于示例代码的VS解决方案。在解决方案中,我在VS项目的附加库目录中指定%LIBPATH%,在附加包含目录字段中指定%INCLUDE%。这样做很好,解决方案也会建立起来。但是当我试着运行它时,我发现你的计算机错误中缺少DLL。我想弄清楚如何让SDK DLL可以被查找,无论它是否在%PATH%上,这样用户就可以简单地构建和运行演示代码,而不需要复制DLL,并且对于他们构建的任何其他应用程序也是如此


编辑2:我投票结束这个问题。似乎使用WiX注册DLL与我的实际问题无关

你把两件事搞混了。注册是一个COM活动,但XXXX.dll丢失表示普通的非COM dll

您对%PATH%的引用还提示存在非COM DLL,但不需要%PATH%。相反,在可执行文件旁边安装DLL


理论上,还有应用程序清单,但微软把它搞得一团糟。如果你写的是任何一种普通的应用程序,我会完全避免使用它们

您可以简单地将SelfRegCost=1添加到每个DLL的元素中。我尝试了,但注册失败。还有,好像是这样的。谢谢你的解释。我编辑了这个问题,以提供一些上下文,说明为什么我不能按照您的建议将DLL放在EXE文件夹中。