我遇到了DLL异常:
response threw exception: Could not load file or assembly or one of its dependencies. An attempt was made to load a program with an incorrect format.
我拥有以下DLL /库组合的所有源代码。我想知道我是否有一个奇怪的组合或我需要检查以确保这个运行。我在静态库中有一个本机C ++代码,由托管的C ++ CLR支持的DLL调用。一切似乎都可以正常工作,直到以下几点。
我创建了一个测试C#EXE控制台应用程序来调用托管C ++ CLR支持的DLL。这按预期工作。当存在调用此托管C ++ CLR支持的DLL的C#类库时抛出异常的区别。是否支持这个或者这是抛出异常的原因?如果此组合不正确,是否有任何解决方法可以使C#类DLL调用托管C ++ CLR支持的DLL。
所有内容都是使用Visual Studio 2012的Windows 7 64位创建的。所有项目都处于发布模式,并选择了x64位平台。
答案 0 :(得分:1)
在我看过的每一个案例中,这是一个32位C#应用程序试图加载64位C ++或C ++ / CLI DLL或64位C#应用程序试图加载32位C ++或C ++ / CLI DLL。
我通常采取的下一步是使用Dependency Walker加载C ++ / CLI dll。依赖性walker将显示您的DLL尝试加载的DLL。在某些情况下,我有一个与64位DLL同名的32位DLL首先出现在Path中,因此它尝试加载错误的DLL。
请注意,Dependency Walker将在64位DLL旁边的图标上显示64,并将显示以下行的消息:“错误:找到了具有不同CPU类型的模块。”在底部的信息框中
答案 1 :(得分:0)
我最好的选择是将c ++ dll编译为win32,你的c#dll设置为Any CPU,并且你在64位系统上运行......