我有一个程序集,Utils设置为“Any CPU”,我有一个托管EXE,它也被设置为“Any CPU”。 exe使用我的Utils程序集。
My Utils程序集必须加载一个非托管的非com 32位DLL并调用一些函数。
我每次都会收到“尝试加载格式不正确的程序”的异常。
有没有办法让我的EXE和程序集在64位模式下运行,但仍然加载32位DLL来进行一些简单的函数调用?
我知道如果我在32位模式下构建我的EXE然后它会工作,但是我的Utils程序集将被WCF Web服务和其他可能以64位模式运行的程序使用,它仍然需要调用32位DLL。
有什么办法吗?我尝试使用LoadLibrary,它从64位代码调用时返回0指针,而DllImport则给出异常。
感谢您的帮助。
答案 0 :(得分:4)
答案 1 :(得分:2)
如果你不能或不会改变过程或装配以匹配另一个,那么不,没有简单的方法可以做你想做的事。
从64位进程与32位程序集进行交互的唯一方法(反之亦然)是将程序集加载到单独的进程中,并使用进程间调用与之通信。
这两种情况之间的代码根本不兼容,所以实在没办法。
或者:
答案 2 :(得分:0)
没有。一切都必须一样。