使用静态库编译时出现错误:未定义的符号
在 XCode 中编译 C 代码时,您可能会遇到错误消息“Undefined Symbols for架构 i386。”此错误通常是由于代码中未定义的静态变量而发生。
问题详细信息
在提供的代码中,类 Log 有一个在标头中声明的静态变量 theString文件Log.h但未在实现文件Log.cpp中定义。这会导致链接器在编译期间无法解析对变量的引用。
解决方案
要解决此错误,必须在实现中定义静态变量文件。
// Log.cpp #include "Log.h" #include <iostream> string Log::theString; // Define static here void Log::method(string arg) { theString = "hola"; cout << theString << endl; }
附加建议
还建议删除using namespace std这行;从头文件中删除,因为它会在包含头文件的地方用 std 污染全局命名空间。相反,您应该在使用其对象时显式指定 std 命名空间。
// Log.h #include <iostream> #include <string> class Log { public: static void method(std::string arg); private: static std::string theString; };
以上是在 C 中使用静态变量时,为什么我会收到'架构 i386 的未定义符号”?的详细内容。更多信息请关注PHP中文网其他相关文章!