我可以从基于x86的项目中引用Matlab代码,但不能从x64项目引用。
我可以将WCF服务构建为“任何CPU”,但不能构建x86。当我尝试仅构建为x86时,它会出现以下错误:
---start error---
System.BadImageFormatException: Could not load file or assembly 'file:///D:\backtest\WcfServiceLibrary.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.
---end error---
因此,我陷入困境:我如何通过WCF提供Matlab调用?它就像一些奇怪的开发者XOR。
关于如何(a)以32位模式编译WCF服务库,或(b)解决问题的任何想法?
我有Win7 x64,MSVS 2010。
答案 0 :(得分:24)
您的问题实际上是WCF测试客户端抱怨您的WCF服务库是32位。这是因为默认情况下,WCF测试客户端始终以64位模式运行。
我在此blog上找到了以下步骤,这使得WCF测试客户端以32位模式运行 - 因此您将看不到您发布的错误。
“cd”到您的WcfSvcHost副本所在的目录。
执行命令“corflags / 32BIT + / FORCE WcfSvcHost.exe”
执行命令“corflags / 32BIT + / FORCE WcfTestClient.exe”
将文件复制回您找到的位置。
现在您的WcfSvcHost和WcfTestClient将以32位模式运行,您将不会收到错误
答案 1 :(得分:9)
WcfServiceLibrary是一个DLL,因此应该构建为“Any CPU”。只有托管所有其他DLL的EXE项目需要根据需要标记为“x86”或“x64”。在这种情况下哪个项目是EXE?
答案 2 :(得分:2)
我找到了几个解决我所有问题的好方案。我在这里记录了它: I can't compile a standard "WCF Service Library" in x86 format