我有一个C#应用程序链接到一些c#DLL,而这些DLL又使用绑定来调用其他Dll中的c ++函数。
如果我使用/ MTd编译c ++ Dll,这一切都正常工作但是当我使用/ MDd时,我在我的C#app中得到一个XMLParseException抱怨它找不到任何Dll(它找不到我的第一个Dll那个我用)。我最好的猜测是,使用这个其他开关会导致它改变寻找Dll的路径,导致它失败。我使用DependencyWalker仔细观察它实际上找不到的两个Dll是'IESHIMS.DLL'和'WER.DLL'。但是,我无法在DependecyWalker的树中的任何地方看到我的c#Dlls。任何人都有任何想法在这里可能有什么问题?
此外,使用非调试等效项(/ MD和/ MT)没有区别。无论如何,我不能使用/ MT,因为它会导致另一个错误。
编辑:我已经把问题缩小了一些。当使用VS2010命令提示符编译和链接时,我的应用程序工作正常,使用VS2008命令提示符它仍然无法找到Dll。有没有人知道这两个版本的VS之间有什么不同,这可能导致我上面描述的行为?提前致谢,
答案 0 :(得分:0)
您是否针对相同的运行时库编译所有模块?从: http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx
“传递给链接器的给定调用的所有模块必须使用相同的运行时库编译器选项(/ MD,/ MT,/ LD)进行编译。”