none
C++多源文件连接 RRS feed

  • 问题

  • 大虾们,在VS2008下,如何将多个C++源文件连接起来啊,比如我写了一个头文件,一个头文件的实现程序,一个主程序,如何将这三个统一\连接起来编译啊
    2009年12月21日 8:15

答案

  • 这个很简单啊,按照你的说法,假设头文件为 a.h, "头文件的实现程序"文件a.cpp "主程序"文件 main.cpp

    1) 在a.cpp 中用#include 包含"a.h"
    2) 在main.cpp 中用#include 包含"a.h"

    Visual Studio 的IDE 会自动的做好后面的事儿,只编译出一个exe 或者DLL 出来。使用Visual Studio 的一大好处就是不用写makefile,也不用关心link的细节。


    如果是你自己编译,链接,对于只有三个源代码文件的程序,也比较简单,推荐一篇博客给你:http://blog.csdn.net/wangningyu/archive/2009/11/18/4830920.aspx

    如果是很多源代码文件,就不提倡手工做了。Linux/UNIX 下一般是写makefile。
    2009年12月21日 9:01
    版主
  • 如果你在带有main函数的文件中include了其他头文件。你需要让你的工程可以在连接过程中找到所使用函数或类的实现。比如把对应的cpp文件加到工程中,或者添加lib库等等。从而使链接器可以找到正确的名字符号。
    麻烦把正确答案设为解答。
    2009年12月22日 1:17
    版主
  • 头文件定义时加上extern关键字即可
    0xBAADF00D
    2009年12月25日 5:23
    版主

全部回复

  • 这个很简单啊,按照你的说法,假设头文件为 a.h, "头文件的实现程序"文件a.cpp "主程序"文件 main.cpp

    1) 在a.cpp 中用#include 包含"a.h"
    2) 在main.cpp 中用#include 包含"a.h"

    Visual Studio 的IDE 会自动的做好后面的事儿,只编译出一个exe 或者DLL 出来。使用Visual Studio 的一大好处就是不用写makefile,也不用关心link的细节。


    如果是你自己编译,链接,对于只有三个源代码文件的程序,也比较简单,推荐一篇博客给你:http://blog.csdn.net/wangningyu/archive/2009/11/18/4830920.aspx

    如果是很多源代码文件,就不提倡手工做了。Linux/UNIX 下一般是写makefile。
    2009年12月21日 9:01
    版主
  • 不对啊,它有这样的错误啊:
    错误 1 error LNK2019: 无法解析的外部符号 "public: bool __thiscall myStack::pop(int &)" (?pop@myStack@@QAE_NAAH@Z),该符号在函数 _main 中被引用 mymain.obj 13
    错误 2 error LNK2019: 无法解析的外部符号 "public: bool __thiscall myStack::push(int)" (?push@myStack@@QAE_NH@Z),该符号在函数 _main 中被引用 mymain.obj 13
    错误 3 fatal error LNK1120: 2 个无法解析的外部命令 E:\ctest\13\Debug\13.exe 13
    而把主程序放到头文件实现程序中,编译通过,运行正常
    2009年12月21日 9:51
  • 如果你在带有main函数的文件中include了其他头文件。你需要让你的工程可以在连接过程中找到所使用函数或类的实现。比如把对应的cpp文件加到工程中,或者添加lib库等等。从而使链接器可以找到正确的名字符号。
    麻烦把正确答案设为解答。
    2009年12月22日 1:17
    版主
  • 头文件定义时加上extern关键字即可
    0xBAADF00D
    2009年12月25日 5:23
    版主