2013-02-14 98 views
1

我有一個名爲「main.c」的程序,它包含調用一個函數的main(),該函數的定義在其他名爲「nim.c」的源文件中可用。我創建了一個名爲「nim.h」的頭文件,其中包含所需方法的原型。這個頭文件「nim.h」已經包含在我的「main.c」中。我把所有的文件都包含在這個程序中。鏈接器錯誤未定義引用'print'

//main.c 
    #include <stdio.h> 
    #include "nim.h" 
    int main() 
    { 
     print(); 
     return 0; 
    } 
//nim.h 
    #include<stdio.h> 
      void print(); 
//nim.c 
    #include<stdio.h> 

    void print() 
    { 
     printf("hello !!"); 
    } 
+1

你編譯過nim.c和main.c嗎?如果沒有這個,編譯器會找到'print'的定義(通過include),但是鏈接器將無法找到它的實現。 – simonc 2013-02-14 09:36:22

+3

您需要鏈接到目標文件'gcc main.c nim.o',或將它們一起編譯爲'gcc main.c nim.c'。 – 2013-02-14 09:36:33

+0

先生,實際上當我編譯nim.c時,它在nim.h中給出了下面對'WinMain @ 16' – user2064676 2013-02-14 09:57:51

回答

1

你必須告訴鏈接,你的可執行文件全部burocratic的東西(如libc中的Win32等)一起由兩個目標文件(main.o和nim.o)。

用gcc你編譯C-來源:

gcc nim.c -o nim.o 
gcc main.c nim.o <libraries> -o main.exe 
0

我用下面的命令,並都成功。

gcc main.c nim.c -o nim 

嘗試上面的命令來建立並讓我知道你準確得到什麼錯誤?

+0

我的程序也在運行謝謝非常先生..... – user2064676 2013-02-14 11:14:14

相關問題