我想向我們的VS2010RC C#解決方案添加一個VC6 COM DLL。使用VC6工具編譯DLL以創建x86版本,並使用VC7跨平臺工具編譯生成VC7 DLL。Visual Studio 2010 64位COM互操作問題
只要消費的C#項目的平臺設置爲x86,組件的x86版本就可以正常工作。無論x64還是x86的x86版本都是實際註冊的。它適用於兩者。如果平臺設置爲「任何CPU」,我會在Interop.<name>.dll
的負載上收到BadImageFormatException
。
至於x64版本,我甚至無法獲得要構建的項目。我收到的tlbimp錯誤:
TlbImp : error TI0000: A single valid machine type compatible with the input type library must be specified.
有沒有人看過這個問題?
編輯:
我已經做了很多挖掘到這個問題,並認爲這可能是一個Visual Studio錯誤。我有一個乾淨的解決方案。我使用與語言不可知的「任何CPU」選擇了我的COM程序集。生成的Interop DLL的進程體系結構是x86而不是MSIL。
可能需要手工製作Interop才能使其正常工作。
如果有人有另一個建議讓我知道。
我希望我可以多投這幾次。很明顯,這個錯誤在回顧過程中意味着什麼,但乍看起來令人費解。 – xcud 2011-08-16 21:40:16
它工作,但我需要在CSProj文件中添加單獨的 項目,以便VS實際開始使用此設置。 –
Roboblob
2012-07-05 11:21:45