gpt4 book ai didi

c++ - 如何将指向某个程序的指针从一个程序发送到另一个程序?

转载 作者:行者123 更新时间:2023-11-30 18:58:47 25 4
gpt4 key购买 nike

我有一个程序可以创建对象“图表”并用数据填充它们。之后,我尝试将这些对象的指针发送到diagram.exe,以便它绘制图表。我使用 _spawnv,diagram.exe 获取的指针与我发送的指针不同。我做错了什么?还有更合适的方法吗?提前致谢。

//这是调用diagram.exe的程序

#include<conio.h>
#include<math.h>
#include<process.h>
#include<iostream>
using std::cout;
using std::endl;


int main()
{
Diagram** diagrams = new Diagram*[2];
diagrams[0] = new Diagram(1001, "sin(x)");
diagrams[1] = new Diagram(150, "atan(x)");
diagrams[2] = NULL;

double x = -2.0;
for(int i = 0; i < 1001; i++)
{
diagrams[0]->points[i].x = x;
diagrams[0]->points[i].y = sin(x);
diagrams[0]->points[i].flag = true;
diagrams[0]->points[i].radius = 4;

diagrams[1]->points[i].x = x;
diagrams[1]->points[i].y = atan(x);
diagrams[1]->points[i].flag = true;
diagrams[1]->points[i].radius = 5;

x += 0.004;
}

cout << "CallDiagram.exe: diagrams: " << (void*)diagrams << endl;

char* args[3] = {"diagram.exe", (char*)diagrams, NULL};
_spawnv(_P_WAIT, "..\\..\\diagram\\Debug\\diagram.exe", args);

_getch();

delete diagrams[0];
delete diagrams[1];
delete [] diagrams;

return 0;
}

//图.cpp

#include "diagram.h"
#include "DrawDiagram.h"


int main(int argc, char* argv[])
{
if(argc <= 1)
{
cout << "\ndiagram.exe: No arguments!" << endl;
return 1;
}

Diagram** diagrams = (Diagram**)argv[1];//NULL;
cout << "diagram.exe: diagrams: " << (void*)diagrams << endl;

enter image description here

最佳答案

您无法将指针从一个程序发送到另一个程序。您可以创建一些共享内存,两个应用程序都打开该内存,并使用它来存储您想要共享的数据。

在 Windows 上,您可以使用 CreateFileMapping创建这样的共享内存,第二个应用程序使用 OpenFileMapping在另一边捕获它。

请注意,这并不比在文件中发送数据容易,因为在其他部分尝试使用数据之前,您需要确保数据已同步并完全写入共享内存。

关于c++ - 如何将指向某个程序的指针从一个程序发送到另一个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com