繁体   English   中英

无法将Visual Studio制作的C ++ DLL导入Windows上的Visual Studio C#项目

[英]Unable to Import a Visual Studio made C++ DLL into a Visual Studio C# Project on Windows

我一直在尝试监视视频内存中的高性能程序。

因此,我在C ++ Visual Studio应用程序中使用了NVIDIA CUDA库来收集所需的数据。

不幸的是,我需要一个可以与Ruby,C#和我公司拥有的软件测试工具一起使用的软件包。

因此,我决定编译一个C ++ DLL,并将其导入到C#Visual Studio项目中进行测试。

我能够编译DLL,但是将其导入到我的Visual C#程序中一直是一个问题。

我右键单击引用->添加引用。 然后,单击“浏览”选项卡并浏览到我的DLL的位置;然后单击“确定”。 “ TestProgram.dll”,然后单击“确定”

然后,我收到以下错误消息“无法添加对C:....的引用。请确保该文件可访问,并且它是有效的程序集或COM组件。”

到目前为止,我已经尝试了以下操作:1.从系统上的几个不同位置导入DLL。 2.将DLL移到我的解决方案资源管理器中并将其导入3.使用“ Invoke”方法:[DllImport(“ PathToMyDll”)] 4.仅使用我的dll名称使用“ Invoke”方法。 5.键入“使用”到我的DLL的路径6.而是将DLL导出为.lib文件

我究竟做错了什么? 我以为,如果我使用Visual Studio 2010导出DLL,那么肯定可以将相同的DLL添加到Visual Studio 2010项目中。

好吧,它是有效的Assembly还是COM组件? 仅仅因为它是C ++ DLL并不意味着它只能与参考一起使用,实际上,大多数不能。 它必须是托管DLL或COM对象。 如果这些都不是,那么您必须从托管程序集中调用非托管代码。 这意味着在存根中定义每个函数。

更多信息在这里: 如何从C#调用C ++ dll导出函数

请注意,您还必须处理64/32位问题,因为如果DLL是针对32位编译的,则不能在64位应用程序中使用它。

我找到了解决此问题的方法。 CUDA创建Windows控制台应用程序项目。 因此,解决方案是仅使用它而不是DLL。

之所以能奏效,是因为Ruby,Test Complete和Visual C#可以读取基本.exe控制台程序的输出(需要做一些工作)。

编译的exe很简单。 我需要做的就是在启动程序时传入一个整数作为参数,程序将从NVIDIA卡中获取所需的数据。

现在的挑战是寻找一种与.exe进行交互的好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM