-3

经过几个小时的谷歌搜索,我没有解决这个问题。

我在非托管 C++ 中开发了一个 DLL。我已将该 DLL 放在 SysWOW64 文件夹中,因为这是一台 64 位计算机。

另一方面,我有一个用 C# 开发的 Winforms 应用程序,它导入 DLL 中包含的函数。我使用 DllImport("name.dll"),但是抛出了 System.DllNotFoundException。

整个解决方案是为 x64 平台配置的。

如果我将 DLL 放在可执行目录中,它就可以工作。

由于开发简单,我希望 DLL 位于系统文件夹中。我正在两台不同的计算机(台式电脑和我的笔记本电脑)上开发这个项目。PC是32位平台,笔记本是64位,文件夹不同。

为了在两台计算机上同步项目,我使用 subversion 存储库。显然,我可以编写一个 Post Build 事件来将 DLL 从 C++ 项目文件夹复制到主可执行文件的输出文件夹,但每次从笔记本电脑移动到 PC 时,我都需要更改 Post build 命令,反之亦然。

知道为什么在系统文件夹中找不到 DLL 吗?最重要的是,有没有办法解决它?

谢谢詹姆

4

1 回答 1

4

整个解决方案是为 x64 平台配置的。

SysWOW64实际上是 32 位系统目录。对于 32 位程序,文件系统重定向器将重定向system32SysWOW64.

  • 对于 32 位进程,系统目录为SysWOW64.
  • 对于 64 位进程,系统目录为system32.

这将解释您面临的问题。

对于它的价值,你真的不应该修改系统目录。它属于系统,应用程序不应修改它。

于 2015-05-05T21:55:52.173 回答