我编写了一些非托管 C++ COM DLL,它们依赖于不在系统路径中的 native C++ DLL。当我在不将 DLL 复制到调试/发布目录的情况下构建关联项目时,我遇到了臭名昭著的 PRJ0050 编译器错误。
很明显,我可以在整个解决方案中复制所需的 DLL,但我想避免这种情况。我知道我可以将项目属性 Linker->"Register Output"设置为 No,然后在后期构建步骤中直接运行 regsvr32。
我的问题是是否有更好的方法来做到这一点。有没有办法将自动“注册输出”选项与在项目级别控制的自定义路径一起使用?我在这里缺少什么?
编辑: 最初我一直在想“注册输出”有一些神奇的作用,比如在干净的情况下取消注册,但事实并非如此。它似乎做的唯一特别的事情就是选择正确的方式来注册不同类型的项目。
最佳答案
我不确定您在问什么 - 但您可以执行构建后步骤。例如 - 如果这些是第 3 方库/DLL,您可以将它们放在已知的相对路径或由环境变量命名的目录中。
据我所知,您的情况并不罕见。
您能否将 DLL 添加为项目的一部分(无论它位于何处)并作为构建步骤进行注册。或者您可以为该文件复制和注册进行构建步骤
同样 - 我不太确定你在问什么,以及为什么你的第 2 段不被你接受,如果它有效的话
关于visual-c++ - Visual Studio : Automatic COM registration with dependant DLLs outside Debug/Release dirs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115326/