none
c++怎么用代码编译win32程序 RRS feed

  • 问题

  • 我想要用c++的代码对一个win32工程进行编译,这个win32工程是一个directX的工程,我想要编写一个c++的应用程序,这个应用程序将会编译这个win32应用程序,但是我不知道怎么用代码实现编译这个动作。

    目前的思路:我想要调用vs2013或2010自带的cl.exe编译这个工程,但我不知道该如何使用它们(我一直使用的vs的IDE进行的编译,只是知道这个东西可以编译),而且我不知道该如何在c++的代码中调用cl.exe编译这个工程,我想要询问一下该如何在c++的代码中调用cl编译一个vs2013创建的win32应用程序,或者使用其他方法进行编译,望解答。

    2016年1月14日 11:35

答案

全部回复

  • 如果可以安装IDE的话,可以使用devenv.exe的命令行模式对工程进行编译。具体参考:

    /Build (devenv.exe)

    C++中调用执行外部程序,参考:

    How to call an external program with parameters?

    如果是我的话,我会使用C#来做,上面的帖子中, Rorzilla的回复有C#的例子。

    2016年1月14日 22:22
  • 如果不安装VS只把devenv.exe拷贝到其他电脑中,可以直接调用这个文件吗?

    (我做这个编译的功能是为了用户可以在他们的电脑中不安装vs就可以直接生成win32应用程序)

    如果不能的话可不可以调用MSBuild呢?或者有没有其他不需要安装即可直接使用的编译器。

    2016年1月15日 8:18
  • MSBuild应该是你需要的工具, 以下来自: MSBuild

    The following examples illustrate when you might run builds by using an MSBuild command line instead of the Visual Studio IDE.

    • Visual Studio isn't installed.

    • You want to use the 64-bit version of MSBuild. This version of MSBuild is usually unnecessary, but it allows MSBuild to access more memory.

    • You want to run a build in multiple processes. However, you can use the IDE to achieve the same result on projects in C++ and C#.

    • You want to modify the build system. For example, you might want to enable the following actions:

      • Preprocess files before they reach the compiler.

      • Copy the build outputs to a different place.

      • Create compressed files from build outputs.

      • Do a post-processing step. For example, you might want to stamp an assembly with a different version.

    以下来自: MSBuild (Visual C++) 

    You can use the MSBuild tool to build a Visual C++ application from the command prompt. The build process is controlled by the information in a project file (.vcxproj) that you can create and edit. The project file specifies build options based on build stages, conditions, and events.

    MSBuild (Visual C++) Overview 这里有些简单的例子,看起来直接用命令行编译VC的工程即可,像下面这样

    msbuild myproject.vcxproj /p:configuration=debug

    我不太了解DirectX,因此不太了解是否需要特殊处理。

    2016年1月18日 0:09