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

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

所以我用谷歌搜索。我发现我需要通过File将Modbus Server加载到WindowsFormApp中,添加现有项目,然后找到并单击该项目。

现在,在进行更多搜索之后,我发现我需要添加对Modbus Server的引用。

突出显示WindowsFormApp6,然后右键单击它,单击“添加”,然后单击“引用”,“解决方案”,“项目”,最后单击“ Modbus服务器”。

最后,谷歌说,在Windows中,我需要编写“使用Modbus服务器”;
或“使用WindowsFormApplication6.Modbus服务器”;
但是每次我键入“ ModbusServer”时,都会显示“找不到类型或命名空间名称'ModbusServer'”(“您是否缺少using指令或程序集引用?”)。我也想将其分解为“ Modbus Server”,因为这是在其他地方编写的方式。

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

我查看了modbus代码,其中没有名称空间(C ++)
有可能做我想做的事吗?

最佳答案

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

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

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

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

一种替代方法是P/Invoke,它将使您能够描述C#的DLL入口点。

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

关于c# - 需要C++解决方案进入C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31574900/

10-11 19:31