我做了一些搜索,但我的問題似乎是微不足道的,所以沒有人問。
我有一個混合的C和C++代碼。Xcode的C/C++鏈接器錯誤:undefined symbol
在model.h
,我有以下聲明:
void free_and_null (char **ptr);
在model.cpp
,我有函數體:
void free_and_null (char **ptr)
{
if (*ptr != NULL) {
free (*ptr);
*ptr = NULL;
}
} /* END free_and_null */
在solve.c
文件,我有以下幾點:
#include "sort.h"
.....
free_and_null ((char **) &x);
當我編譯該項目時,它具有下面的鏈接錯誤:
wrap) Undefined symbols for architecture x86_64: "_free_and_null", referenced from:
爲什麼這麼簡單的程序可以有錯誤?我使用Apple LLVM 6.0作爲編譯器。任何輸入是高度讚賞。
謝謝你rici!有用!它提出了關於編譯器和鏈接器的褪色內存。但我仍然記不清,在Xcode中,.c文件和.C++文件是用不同的編譯器編譯的? 我是Xcode的新手。我曾經使用MS Visual Studio,這非常方便和有用。但是因爲我喜歡Macbook,所以我將所有的應用軟件都移到了mac os版本上。 Xcode似乎不如MS Visual Studio那麼方便。你能推薦一些IDE在Mac OS上用於C/C++編碼嗎?謝謝! – user43964
@ user43964:它是相同的編譯器套件(clang),但名稱修飾是ABI的一部分,需要對C和C++名稱進行不同的處理。我對窗戶瞭解不多,但如果它不同,它會讓我感到驚訝。也許你的Windows IDE沒有讓你在一個項目中混合使用語言。如果你用C++編譯C代碼,它通常可以正常工作,並且你沒有命名問題。就mac os x而言,我唯一使用的IDE是xcode。 – rici