1

我想学习使用头文件。我得到了一个错误。这是我的代码:

printmyname.h:

void printMyName();

printmyname.cpp:

#include "printmyname.h"

void printMyName() {
    cout << "omer";
}

try.cpp(主文件):

#include <iostream>
#include "printmyname.h"
using namespace std;


int main() {
    printMyName();

    return 0;
}

这是错误:

undefined reference to `printMyName()`

有什么问题?

4

3 回答 3

4

在这种情况下,取消定义引用与您的头文件无关。这意味着链接器找不到printMyNamein的实现printmyname.cpp。如果您正在使用g++,您应该尝试:

g++ try.cpp printmyname.cpp -o yourBinaryName

如果您使用的是 makefile,则应为 try.cpp 正确添加依赖项(printmyname.cpp)。

编辑:

正如@zmo 在他的评论中建议的那样:

您也可以通过两次编译来完成(更适合使用 Makefiles):

g++ -c printmyname.cpp 
g++ try.cpp printmyname.o -o yourBinaryName
于 2013-06-12T10:24:40.767 回答
0

如果您使用的是 Windows,您还需要将 printmyname.cpp 添加到您的项目中。考虑在标题中添加包含保护

#ifndef PRINTMYNAME_INCLUDED 
#define PRINTMYNAME_INCLUDED 

void printMyName();

#endif

您还需要将#include <iostream>andusing namespace std;从 try.cpp 移动到 printmyname.cpp 文件。

于 2013-06-12T10:43:05.947 回答
-6

您只需要在 printMyName.h 内的 printMyName.cpp 中添加代码/定义。

void printMyName();
{
    cout << "omer";
}
于 2013-06-12T10:26:29.617 回答