【问题标题】:Link Object File GCC/G++链接目标文件 GCC/G++
【发布时间】:2013-02-12 17:07:00
【问题描述】:

我有我的主 C++ 类 main.cpp...

#include "fs.h"

int main(void)
{
    return minit();
}

fs.h:

#ifndef __FS__
#define __FS__
int minit (void);
#endif

还有一个 fs.o(使用 minit() 进入)文件,它已经是一个目标文件,使用 g++ 编译,没有 -g。

这是我的生成文件:

myfs:   main.o fs.o
    g++ -o myfs   -m32 -Wall fs.o main.o
main.o: main.cpp fs.h
    g++ -o  main.o -m32 main.cpp

每次我尝试链接所有内容时,链接器都会说在 main.cpp 中有一个未定义的对 minit(); 的引用,这可能是什么?

【问题讨论】:

    标签: gcc linker g++


    【解决方案1】:

    您在实际实现中定义了一个名为 minit() 的函数 - 这就是您遇到此问题的原因。

    你需要实际编写函数 minit():

    int minit(void) { 返回0; }

    例如...

    【讨论】:

    • 函数 minit 在 fs.o 文件中实现。它已经编译和一个目标文件。它是给我的。
    • 很明显,链接有问题。现在你的意思是 mini() 还是 minit()?因为您正在定义 minit() 但无法链接到 mini()。
    【解决方案2】:

    您应该将它指向编译器,该函数是在其他地方定义的。尝试更改此声明:

    int minit (void);
    

    到这里

    extern int minit (void);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多