【问题标题】:Windows forms control library; Managed and UnamanagedWindows 窗体控件库;托管和非托管
【发布时间】:2009-04-23 20:15:58
【问题描述】:

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

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

【问题讨论】:

    标签: .net c++ unmanaged managed-c++


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这就是我喜欢编程的原因。看似复杂的问题有简单的解决方案;反之亦然:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多