C# 如何将浮点数从C应用程序发送到C++;应用

C# 如何将浮点数从C应用程序发送到C++;应用,c#,c++,ipc,interprocess,C#,C++,Ipc,Interprocess,我有两份申请: 1.:用VisualStudio 2013编写的C#GUI应用程序 2:VisualStudio 2013中编写的C++ GUI应用程序。p> 我想将浮点数从应用程序1发送到应用程序2 (换句话说,如果C++应用程序计算浮点数(例如:12.32),那么我希望在C++应用程序编写的标准输出上看到这个数)。 最简单的方法是什么?是否有任何Windows API或公共内存地址之类的东西来完成此任务?Hmmm。。。有办法做到这一点(据我所知): 使用插座 使用 使用读写文件 使用P\

我有两份申请:

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

2:VisualStudio 2013中编写的C++ GUI应用程序。p> 我想将浮点数从应用程序1发送到应用程序2

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


最简单的方法是什么?是否有任何Windows API或公共内存地址之类的东西来完成此任务?

Hmmm。。。有办法做到这一点(据我所知):

  • 使用插座
  • 使用
  • 使用读写文件
  • 使用P\Invoke调用
  • 使用

如果我想在GUI应用程序上执行此操作,我将选择p\Invoke,但如果我想在后台执行某些操作,我将选择IPC通道或共享内存(IPC通道更好)

Hmmm。。。有办法做到这一点(据我所知):

  • 使用插座
  • 使用
  • 使用读写文件
  • 使用P\Invoke调用
  • 使用

如果我想在GUI应用程序上执行此操作,我将选择p\Invoke,但如果我想在后台执行某些操作,我将选择IPC通道或共享内存(IPC通道更好)

您可以使用任何类型的进程间通信机制来执行此操作。最简单的可能是匿名管道。你将发现如何在C++和C语言中使用匿名管道。< /P> < P>可以使用任何进程间通信机制来实现这一点。最简单的可能是匿名管道。您将发现如何在C++中和C语言中使用匿名管道。

< P>我假定两个应用程序同时运行。我会使用套接字进行本地传输,或者假设C++应用程序只捕获来自C++应用程序的数据,这样就可以将它作为数据对象返回并传递给产卵C++应用程序作为参数。我会使用套接字进行本地传输,或者我假设C++应用程序只捕获来自C++应用程序的数据,这样就可以将它作为数据对象返回并传递给产卵C++应用程序作为参数。

< P>最简单的方法之一是将值转储到C中的文件中,然后用C++来拾取它们。p> 注意:此方法不是最可靠/最快的,可能不适合企业产品,但对于快速的一次性需求,此方法应该可以很好地工作

将输出保存到文件

using System.IO;

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

然后用C++来读取它…p>

#包括
内部主(空)
{
FILE*r_FILE=NULL;
浮动fd_值=0;
r_file=fopen(“临时数据”、“rb”);
if(NULL==r\u文件)
返回0;
fread(&fd_值,1,sizeof(fd_值),r_文件);
fclose(r_文件);
printf(“fd_值=%f\n”,fd_值);
返回0;
}

<>代码>

最简单的方法之一是将值转储到C中的文件中,然后用C++来拾取它们。p> 注意:此方法不是最可靠/最快的,可能不适合企业产品,但对于快速的一次性需求,此方法应该可以很好地工作

将输出保存到文件

using System.IO;

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

然后用C++来读取它…p>

#包括
内部主(空)
{
FILE*r_FILE=NULL;
浮动fd_值=0;
r_file=fopen(“临时数据”、“rb”);
if(NULL==r\u文件)
返回0;
fread(&fd_值,1,sizeof(fd_值),r_文件);
fclose(r_文件);
printf(“fd_值=%f\n”,fd_值);
返回0;
}