0

我编写的 Windows 窗体控件库项目 (C++) 使用非托管 dll。非托管 dll 有一个头文件(柴郡猫)。我只是将它包含在控制库项目中。并调用非托管 dll 中的函数(当然需要适当的编组)。这将编译和构建。问题是当我继续将控件添加到我的脚手架的工具箱中时,这是一个托管 C++ winform 应用程序,VS2005 抱怨它不是一个 .Net 模块。

我见过人们使用 MFC dll 作为 Windows 窗体控件进行转换。我究竟做错了什么?。

4

1 回答 1

1

可能是因为 VS2005 没有找到你的原生 .DLL。此 .DLL 以“正常”方式搜索本机 .DLL:

  • 当前目录(我认为它主要是VS的启动目录)
  • 应用程序目录(在 %ProgramFiles%\Microsoft Visual Studio... 中的某处)
  • %PATH% 目录。

您可以尝试将您的本机 DLL 放在上述目录中的某个位置,并尝试获得更好的结果。

我绝对建议您将本机部分设为静态并将其静态链接到您的 .NET 项目(如果可能的话),因为这样可以避免本地 .DLL 查找问题。(这是我做的,因为有很多问题。例如,我们有一个翻译工具 [SDL Passolo],它可以处理 .NET DLL 并将它们打包到包括所有引用的 DLL 的翻译包中......但只有 .NET DLL,但不是本机DLL!)。

于 2009-04-23T21:48:33.840 回答