如何将C#应用程序中的浮点数发送到C ++应用程序?

时间:2016-10-09 16:38:19

标签: c# c++ ipc interprocess

我有两个应用程序:

1:用VisualStudio 2013编写的C#GUI应用程序。

2:用VisualStudio 2013编写的C ++ GUI应用程序。

我想从应用程序#1向应用程序#2发送浮点数。

(换句话说:如果C#app。计算一个浮点数(例如:12.32),那么我希望在C ++应用程序编写的标准输出上看到这个数字。)

实现这一目标的最简单方法是什么?是否有任何Windows API或common-memory-address-thing等来实现这一目标?

4 个答案:

答案 0 :(得分:2)

嗯......有一些方法可以做到(我知道):

如果我想在GUI Applcation上执行此操作,我将选择P \ Invoke,但如果我想做一些背景,我会选择IPC频道或共享内存(IPC频道更好)

答案 1 :(得分:2)

您可以使用任何类型的进程间通信机制来执行此操作。最简单的可能是匿名管道。您将了解如何在C ++中使用匿名管道here和在C#中使用there

答案 2 :(得分:1)

我假设两个应用程序同时运行。我会使用套接字进行本地传输,或者我假设c ++应用程序只是从C#应用程序捕获数据,因此您可以将其作为数据对象返回并将其作为参数传递给生成的C ++应用程序。

答案 3 :(得分:1)

最简单的方法之一是将值转储到C#中的文件中,然后在C ++中选择它们。

注意:此方法不是最可靠/最快的,可能不是最适合企业产品的方法,但是为了快速一次需要,这应该可以正常工作。

将输出保存到文件...

using System.IO;

class ConsoleApplication {
    static void Main()
    {
        using (BinaryWriter writer = new BinaryWriter(File.Open("temp.dat", FileMode.Create)))
        {
            writer.Write(1.2345F);
        }
    } }

然后使用c ++ ... (Source is here)

阅读
#include <iostream>

int main(void)
{
    FILE *r_file = NULL;
    float fd_value = 0;

    r_file = fopen("temp.dat", "rb");
    if (NULL == r_file)
        return 0;

    fread(&fd_value, 1, sizeof(fd_value), r_file);
    fclose(r_file);


    printf("fd_value = %f\n", fd_value);
    return 0;
}