在架构x86_64中找不到xcode c ++ sqlite3符号

时间:2013-08-28 13:47:15

标签: c++ sqlite linker xcode4.4

您好我想在xcode 4中的c ++项目中使用sqlite

现在我收到此错误

  
    

Ld / Users / jayb / Library / Developer / Xcode / DerivedData / EMS-bpigynlzjbrescadebhoiupqmtkg / Build / Products / Debug / EMS normal x86_64         cd / Users / jayb / Documents / Developement / EMS / EMS         setenv MACOSX_DEPLOYMENT_TARGET 10.8         /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10。 8.sdk -L / Users / jayb / Library / Developer / Xcode / DerivedData / EMS-bpigynlzjbrescadebhoiupqmtkg / Build / Products / Debug -F / Users / jayb / Library / Developer / Xcode / DerivedData / EMS-bpigynlzjbrescadebhoiupqmtkg / Build / Products / Debug -filelist /Users/jayb/Library/Developer/Xcode/DerivedData/EMS-bpigynlzjbrescadebhoiupqmtkg/Build/Intermediates/EMS.build/Debug/EMS.build/Objects-normal/x86_64/EMS.LinkFileList -mmacosx-version-min = 10.8 -o / Users / jayb / Library / Developer / Xcode / DerivedData / EMS-bpigynlzjbrescadebhoiupqmtkg / Build / Products / Debug / EMS

         

架构x86_64的未定义符号:       “_sqlite3_close”,引自:           _main在main.o中       “_sqlite3_errmsg”,引自:           _main在main.o中       “_sqlite3_open”,引自:           _main在main.o中     ld:找不到架构x86_64的符号     clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

  

我发现这是链接器问题 它可以用编译器选项-lsqlite3

来修复

但是,如何在Xcode中添加该选项??????

我使用xcode 4.4上的“运行”按钮来编译我的项目。 我没有在终端窗口编译。

这是我的代码

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <sqlite3.h>

using namespace std;

int main()
{   
    sqlite3 *db;
    int rc = sqlite3_open("EMSDB", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        exit(0);
    }
    else {
        fprintf(stderr, "Opened Database successfully\n");
    }

    sqlite3_close(db);

    return 0;
}

3 个答案:

答案 0 :(得分:5)

我找到了路, 希望它可以帮助某人寻找相同的解决方案。 现在它构建正确,我可以看到输出

woops,我还不能发布图片:(

来自xcode构建设置, 你可以找到一个叫做(链接)的标签 并在链接选项卡上 有现场调用'其他链接标志' 我只是为Debug和Release

添加了-lsqlite3

欢呼声

答案 1 :(得分:1)

我不熟悉xcode。查找linker设置或compiler设置,并在其中添加-lsqlite3

也许这个页面有助于:Xcode what's the difference between "Other Linker Flags" vs "Other_LDFLAGS"

LDFLAGS传递给链接器。 CFLAGS被传递给编译器。

答案 2 :(得分:0)

需要在项目中链接libsqlite3.dylib。这可以在 链接的框架和库并添加libsqlite3.dylib。

供参考: xcode sqlite3 libsqlite.dylib