Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Windows窗体控件库;有管理和无管理_.net_C++_Unmanaged_Managed C++ - Fatal编程技术网

.net Windows窗体控件库;有管理和无管理

.net Windows窗体控件库;有管理和无管理,.net,c++,unmanaged,managed-c++,.net,C++,Unmanaged,Managed C++,我编写的windows窗体控件库项目(C++)使用非托管dll。非托管dll有一个头文件(柴郡猫)。我只是把它包括在控制库项目中。并调用非托管dll中的函数(当然是正确的封送处理)。这将编译和构建。问题是,当我将控件添加到我的脚手架的工具箱时,它是一个托管C++ WiFrm应用程序,VS2005抱怨它不是.NET模块。 我见过有人将MFC DLL用作windows窗体控件进行转换。我做错了什么 可能是因为VS2005找不到您的原生.DLL。此.DLL以“正常”方式搜索本机.DLL: 当前目录(

我编写的windows窗体控件库项目(C++)使用非托管dll。非托管dll有一个头文件(柴郡猫)。我只是把它包括在控制库项目中。并调用非托管dll中的函数(当然是正确的封送处理)。这将编译和构建。问题是,当我将控件添加到我的脚手架的工具箱时,它是一个托管C++ WiFrm应用程序,VS2005抱怨它不是.NET模块。
我见过有人将MFC DLL用作windows窗体控件进行转换。我做错了什么

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

  • 当前目录(我认为它主要是VS的启动目录)
  • 应用程序目录尝试(位于%ProgramFiles%\Microsoft Visual Studio…)中的某个位置
  • %路径%dirs
您可以尝试将本机DLL放在上面提到的目录中的某个位置,并尝试获得更好的结果


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

这就是我喜欢编程的原因。看似复杂的问题有简单的解决方案;反之亦然:-)