Ich benutze einen Header namens header.h in main.c. Der Funktionstest wird in header.h angekündigt und in test.c. definiert. Jedoch sagt es Worte unten, obwohl ich System bauen verwenden, wie C.Wie kompiliere ich mit externer Header-Datei in erhabenen Text in C?
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
Undefined symbols for architecture x86_64:
"test(int)", referenced from:
_main in main-a4d82e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[Finished in 0.6s with exit code 1]
[cmd: ['bash', '-c', 'g++ -Wall -std=c++11 -O2 \'/Users/hanlock/Documents/CODE/TEST/TEST/main.c\' -o \'/Users/hanlock/Documents/CODE/TEST/TEST/main\' && osascript -e \'tell application "Terminal" to activate do script " cd \\"/Users/hanlock/Documents/CODE/TEST/TEST\\" &&start_ms=$(ruby -e \\"puts (Time.now.to_f * 1000).to_i\\")&&clear&&\\"/Users/hanlock/Documents/CODE/TEST/TEST/main\\" &&elapsed_ms=$(($(ruby -e \\"puts (Time.now.to_f * 1000).to_i\\") - start_ms))&& read -p \\"Press Enter to exit($elapsed_ms ms).\\"&&exit"\'']]
[dir: /Users/hanlock/Documents/CODE/TEST/TEST]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
ich ähnliche Fragen zu diesem Thema in C++ gelesen habe. In meinem Fall scheint es jedoch nicht zu funktionieren. Also, hier kommt das Problem. Wie kann ich externe Header-Datei mit erhabener verwenden in der Sprache C.
Hier ist der Code:
main.c
#include <stdio.h>
#include "./Header.h"
int main(int argc, const char * argv[]) {
test(1);
return 0;
}
header.h
#ifndef Header_h
#define Header_h
int test(int);
#endif
test.c
#include <stdio.h>
int test(int i){
printf("%d\n",i);
return 0;
}
könnten Sie Ihren Code und den Befehl, die Sie verwenden, um es zu kompilieren? –
Sicher. Es ist bearbeitet. BTW, es funktioniert in Xcode mit den gleichen Codes. – LEO
die Namen scheinen nicht übereinzustimmen, ist die Kopfzeile namens head.h oder Header.h? –