问题:在visual stidio写代码,要使编译后出来多个exe, exe之间可以用命令行的重定向、管道操作符 | 进行通讯,请问是否在同一解决方案下创建多个项目就可以达成?
还有就是,请问如何使这些程序的公用的类和函数只写一遍,但是各个exe编译链接的时候都可以链接进?
(1)你在vs创建的多个工程是相互独立的项目,他们之间无法直接通信,进程间通信需要通过网络(TCP/UDP等)、共享内存、管道等方式来完成。
(2)对于多个exe共享的类、函数,可以封装成动态库,在其它项目中调用动态库就可以,这样,对于共享类和函数只需要维护一个工程就可以了。当然,也可以不封装成库,另一种方法是:把共享的类、函数等放在一个文件夹内,在其它项目使用共享的类和函数的时候,在项目的属性中添加共享类和函数的.h文件所在的目录即可。如下:
可以链接源代码,方法是创建若干项目,再创建一个共有的文件夹,把需要共享的cpp放在里面
在每个项目中添加源代码文件,在打开文件对话框里勾选链接文件选项
我可以回答该问题。
可以在同一解决方案下创建多个项目来实现多个程序之间共享公共类和函数,然后在项目中引用这些公共内容。
具体实现步骤如下:
1.建立类库项目,添加公共类和函数。
2.在需要引用公共类和函数的项目中,右键项目,选择“添加引用”,在“项目”中选择类库项目即可。
3.编译每个项目,生成对应的exe文件。
4.通过命令行的重定向、管道操作符 | 进行通讯,在命令行中输入“program1 | program2”即可。
需要注意的是,在代码中引用公共类和函数时,需要在每个项目中都添加相应的using语句,以确保编译器能够正确识别公共内容。
以下是示例代码:
公共类库项目MyLibrary:
// MyLibrary.h
#pragma once
namespace MyLibrary
{
class MyClass
{
public:
void MyFunction();
};
}
// MyLibrary.cpp
#include "MyLibrary.h"
#include <iostream>
namespace MyLibrary
{
void MyClass::MyFunction()
{
std::cout << "Hello from MyLibrary!" << std::endl;
}
}
项目A:
// ProgramA.cpp
#include <iostream>
#include "MyLibrary.h"
int main()
{
MyLibrary::MyClass myClass;
myClass.MyFunction();
std::cout << "Hello from ProgramA!" << std::endl;
return 0;
}
项目B:
// ProgramB.cpp
#include <iostream>
#include "MyLibrary.h"
int main()
{
MyLibrary::MyClass myClass;
myClass.MyFunction();
std::cout << "Hello from ProgramB!" << std::endl;
return 0;
}