Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 从当前文件编译另一个文件_Visual Studio_Visual C++_Visual Studio 2012_Preprocessor_Conditional Compilation - Fatal编程技术网

Visual studio 从当前文件编译另一个文件

Visual studio 从当前文件编译另一个文件,visual-studio,visual-c++,visual-studio-2012,preprocessor,conditional-compilation,Visual Studio,Visual C++,Visual Studio 2012,Preprocessor,Conditional Compilation,我正在使用Visual Studio 2012。 我有一个Win32控制台项目,其中包含源文件“1.cpp”。我想从“1 .CPP”的源代码中编译一些其他C++文件(让我们说“2”.CPP)。 我试过这个-: int main() { system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat"); system("C:\\\"Program Files (x86)\"\\\

我正在使用Visual Studio 2012。
我有一个Win32控制台项目,其中包含源文件“1.cpp”。我想从“1 .CPP”的源代码中编译一些其他C++文件(让我们说“2”.CPP)。 我试过这个-:

int main()
{
 system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat");
 system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\bin\\cl.exe /EHsc 2.cpp");
} 
我这样做是因为我想使用
/D
选项编译“2.cpp”,在“2.cpp”中定义一个宏,其值在“1.cpp”中计算。
类似这样的东西-:

int main()
{
 string mystring;
 system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat");
 system(("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\bin\\cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
}  
system(("C:\\\"Program Files...vcvarsall.bat && C:\\\"Program Files...cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
尽管在调用“cl.exe”之前执行了“vcvarsall.bat”,但我仍然收到一条错误消息:“程序无法启动,因为您的计算机缺少mspdb110.dll。请尝试重新安装程序以解决此问题。”

如前所述,我可能需要设置一些环境变量。
有没有不需要设置环境变量的方法?如果否,那么如何从源“1.cpp”中设置这些变量?

对“系统”的每次调用都会产生一个新进程。在一个进程中调用cvarsall不会影响另一个进程

您需要创建一个批处理文件,同时使用命令和调用


cmd/c mybat.bat

我找到了一个简单的方法-:

int main()
{
 string mystring;
 system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat");
 system(("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\bin\\cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
}  
system(("C:\\\"Program Files...vcvarsall.bat && C:\\\"Program Files...cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());

我不懂批处理编程。您能否确切地说明如何将
system()
命令转换为相应的批处理命令?换句话说,“mybat.bat”的确切内容是什么?会是什么样的?如果是,那么我想我需要使用文件处理从程序中创建这个批处理文件,然后使用
system(“cmd/cmybat.bat”)
调用它。或者你是说别的什么?