我会说这很简单,因为它很快就会变得很混乱。我有一个COM dll(用VB6制作),我希望能够通过我的C#应用程序使用它。以下是我采取的步骤和结果。
请注意:
原始COM .dll未在已部署的计算机上注册,因为部署的计算机无法将COM .dll识别为有效的dll文件。
COM .dll是在x86环境下制作的,而部署的计算机是在x64环境中运行的(这有什么不同)?
我的目标是什么: 我希望能够运行CodeDom生成的.exe文件,而不依赖于interop.dllname.dll文件。有没有办法将这些DLL文件存储在内存中?此外,我不希望我的用户必须先注册dll文件才能使用CodeDom生成的.exe文件。有什么方法可以这样做吗?
我感谢你对此事的任何帮助。
感谢您的时间,
埃文
答案 0 :(得分:3)
听起来很像你有一个简单的32/64位不匹配。由于您的COM DLL是32位,您需要:
SysWow64
文件夹中。我的猜测是你试图注册64位版本的regsvr32
。如果你确定注册和消费涉及的所有内容都是32位,那么你应该没事。
答案 1 :(得分:2)
答案 2 :(得分:1)
第一个问题,interop.name.dll
库可以通过反编译轻松解决。只需反编译库并将源代码包含在原始库中。您可以使用任何反编译工具,IlSpy应该这样做。
对于COM,存在一种称为“注册免费COM”的技术,它已在Windows XP中引入,更多内容在此http://msdn.microsoft.com/pl-pl/magazine/cc188708(en-us).aspx。虽然它肯定有效,但我不确定你是否会因为x86-x64不匹配而遇到任何问题。