2010-09-10 35 views
0

我们有一个使用带有托管代码的.dll构建的vs2010项目。我在vs2010中构建了.dll,目标是.NET Framework 4.0(也尝试过客户端配置文件),这是2010年您可以使用的唯一选项。当我去运行它时,它不能初始化,我认为它有些不兼容......但我不知道它会是什么。有没有人有任何想法?应用程序未能正确初始化

另外,我还下载了一个修补程序,它允许你做增量托管构建(本来这不是一个功能,2010年)

谢谢!

+0

现在你希望有人会根据这些信息产生一个答案?请描述所有项目(目标平台等),错误的详细信息,配置文件中的内容等。 – 2010-09-10 15:48:23

+0

另外,增量构建与什么有关?你没有尝试过吗? – 2010-09-10 15:48:54

+0

对不起,我不知道问题是多么模糊。我认为这是管理的.dll(因此是增量构建)的问题,因为它在VS2008中运行良好。据我所知,将其移至2010年,没有任何变化。我们正在使用Ogre 1.7,以Windows为目标,并且对于日志文件或任何内容都没有输出......它永远不会成为主流。确切的错误是“应用程序未能正确初始化(0xc000007b)。单击确定以终止应用程序。” – 2010-09-10 16:09:45

回答

2

异常0xc000007b(STATUS_INVALID_IMAGE_FORMAT)几乎总是在64位版本的Windows上生成。因为你的程序运行在64位模式下,并且试图加载一个包含非托管32位代码的DLL。或者相反。

确保托管程序集的平台目标设置为任何CPU。这在VS2010中不再是默认设置。项目+属性,生成选项卡,平台目标设置。请务必对Debug和Release配置进行更改。

如果您不知道DLL可能是什么,那么请观察使用SysInternals的ProcMon实用程序加载DLL的程序。

+0

Linker-Advanced中名为“Target Machine”的设置被设置为Machinex86,这是正确的。这就是你正在谈论的环境......我找不到你指的那个。此外,我做了一个Dependency Walker,它回来了3个缺少.dll:MSVCR90D.DLL,IESHIMS.DLL和WER.DLL。并且它表示存在“导入/导出不匹配或加载失败”:OGREMAIN_D.DLL和OIS_D.DLL。也许我必须在本地构建Ogre的东西...... – 2010-09-10 17:12:04

+0

那么,它是否在64位版本的Windows上运行?不,我正在谈论C#项目设置。这与目标机器设置无关。依赖Walker不再是一个好工具,它在并行缓存中遇到麻烦,请尝试ProcMon来找到麻烦制造者。此外,不要部署调试版本,您不能分发msvcr90d.dll – 2010-09-10 17:21:09

+0

不确定64位,没有一个可用的atm。 C#项目已正确设置。我会弄清楚如何使用ProcMon,感谢帮助顺便说一句。 – 2010-09-10 17:43:14