我正在尝试使用createProces
调用更正其他程序的程序。
问题是当我将Brick
类的对象作为createProcess
调用的参数传递时。
我以这种方式创建对象(在主体中):
char IpApplicationName[1000];
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcessInfo;
strcpy(IpApplicationName, "c:\\Documents and Settings\\Eigenaar\\Bureaublad\\BluetoothTestr\\recvProc\\bin\\Debug\\recvProc.exe");
//set up the NXT
Connection *connection = new Bluetooth();
Brick *nxt = new Brick(connection);
char *nxt_ptr = (char *)&nxt;
然后我这样连接(6
是蓝牙加密狗的通信端口):
connection->connect(6);
CreateProcess(IpApplicationName, nxt_ptr, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartInfo, &ProcessInfo);
我认为这一切都很好,但问题是当我将char*
强制转换回Brick
进程中的recvProc.exe
类时:
Brick *nxt = (Brick*)argv[0];
如果我评论这个,那么程序运行正常......这条线有什么问题?或者我需要在createProcess
中传递Connection对象吗?
答案 0 :(得分:3)
作为命令行参数,您传递一个指向类的指针的指针。这在很多方面被打破了:
简而言之,您不能将对象作为命令行参数传递。只有文字。
那么,这里做了什么?您可以选择以下选项:
recvProc
转换为在父进程内运行的DLL。