需要c ++的解决方案到c#

时间:2015-07-22 22:10:28

标签: c# c++

希望有人能指出我正确的方向。

我在c#中启动了一个名为WindowsFormApplication6的windowsFormApplication(我知道,我是超级创意)。现在我有一个c ++项目(“Modbus服务器”),我需要加载到项目WindowsFormApplication6下运行。

所以我用Google搜索了它。我发现我需要通过File将Modbus Server加载到WindowsFormApp中,添加现有项目,找到并点击项目。

现在进行更多谷歌搜索,我发现我需要添加对Modbus服务器的引用。

然后高亮显示WindowsFormApp6,然后右键单击它,点击添加,然后点击参考,解决方案,项目,最后点击Modbus服务器。

最后谷歌说在Windows中我需要写“使用Modbus服务器”; 或“使用WindowsFormApplication6.Modbus服务器;” 但每次我键入“ModbusServer”时,它都会显示“无法找到类型或命名空间名称'ModbusServer'”(“您是否缺少using指令或汇编引用?”)。我也把这个词分成了“Modbus服务器”,这是我想的,因为这就是它在其他地方的写法。

所以现在它看起来像是“使用Modbus服务器”;但它一直说“预期;”

我查看了modbus代码,其中没有命名空间(c ++) 甚至可以做我想做的事情吗?

1 个答案:

答案 0 :(得分:1)

您的Modbus Server C ++项目是否生成托管程序集?如果没有,可能是您的添加参考文件实际上没有做任何事情。在C#项目中,如果在“解决方案资源管理器”中展开“引用”节点,是否会看到Modbus服务器的条目?该条目是否叠加了警告图标(带有感叹号的小黄色三角形)?

如果您的C ++项目正在生成本机C ++,我不认为添加项目参考将起作用。

如果Modbus服务器正在生成COM对象,则可以使用“添加引用”和“COM”选项卡添加对COM对象的引用。但这意味着您必须在您正在构建的系统上注册COM对象 - 通过运行regsvr32(或任何适合您的COM对象的手动)或在Modbus Server项目中自动运行。

如果Modbus服务器是常规本机C ++ DLL(即,不是COM对象),则根本无法通过“添加引用”访问它。

一个替代方案是P/Invoke,它可以让你描述C#的DLL入口点。

另一种选择是编写一个C++/CLI包装器,它像任何其他C ++程序一样调用Modbus服务器,但它声明了可以从C#调用以调用Modbus服务器方法的.NET方法。然后,您可以使用“添加引用”将C ++ / CLI包装器项目添加到C#项目中。