c-PCG随机数生成器和Xcode未定义的符号(无法找到内核)



在问这个问题之前,我必须说我目前在Yosemite上使用Xcode 6.2。

我的另一个C代码也遇到了这个问题,它涉及随机数的生成。

因此,我想使用这个著名的库来生成随机数(特别是我正在尝试编译名为pcg32-demo.c的文件,你可以在Minimal c Implementation 0.9的下载中找到它,它位于同一文件夹pcg_basic.c中)。我用Xcode创建了这个项目并进行了编译。然后我得到以下错误消息:

Undefined symbols for architecture x86_64:
"_pcg32_boundedrand_r", referenced from:
      _main in main.o
  "_pcg32_random_r", referenced from:
      _main in main.o
  "_pcg32_srandom_r", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在谷歌上搜索了一下,似乎我不得不把架构改为通用。不幸的是,它没有太大变化,因为我在32位中遇到了同样的错误

Undefined symbols for architecture i386

然后我再次在谷歌上搜索,因此我添加了Frameworks和Libraries。由于我不知道我需要哪一个,所以我把它们都加了。然而,我收到了这个错误消息:

ld: framework not found Kernel
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这有点奇怪!我很确定RNG没有涉及内核。

为了编译,我使用了来自终端的gcc gcc pcg32-demo.c和Xcode中的"播放"按钮。从后者中,我还得到了以下内容:

Ld /Users/edwin/Library/Developer/Xcode/DerivedData/testPCG-eygvqldhuakrfqakhmugrepbwsbt/Build/Products/Debug/testPCG normal x86_64
cd /Users/edwin/Documents/CodeZRPring/Testnewrandom/testPCG
export MACOSX_DEPLOYMENT_TARGET=10.10
/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.10.sdk -L/Users/edwin/Library/Developer/Xcode/DerivedData/testPCG-eygvqldhuakrfqakhmugrepbwsbt/Build/Products/Debug -F/Users/edwin/Library/Developer/Xcode/DerivedData/testPCG-eygvqldhuakrfqakhmugrepbwsbt/Build/Products/Debug -filelist /Users/edwin/Library/Developer/Xcode/DerivedData/testPCG-eygvqldhuakrfqakhmugrepbwsbt/Build/Intermediates/testPCG.build/Debug/testPCG.build/Objects-normal/x86_64/testPCG.LinkFileList -mmacosx-version-min=10.10 -Xlinker -dependency_info -Xlinker /Users/edwin/Library/Developer/Xcode/DerivedData/testPCG-eygvqldhuakrfqakhmugrepbwsbt/Build/Intermediates/testPCG.build/Debug/testPCG.build/Objects-normal/x86_64/testPCG_dependency_info.dat -o /Users/edwin/Library/Developer/Xcode/DerivedData/testPCG-eygvqldhuakrfqakhmugrepbwsbt/Build/Products/Debug/testPCG

有人知道我为什么会收到这些错误消息吗?它只与随机数有关吗?

我认为您从链接器中得到了错误。问题是,您单独编译pcg32-demo.c文件,而没有将其与包含pcg32-demo.c中使用的函数的所需定义的其他对象文件链接。

解决方案:


编辑:

在收到@trojanfoe先生的宝贵评论后,您似乎需要选择

  • 在包含函数定义的Xcode中将所需文件添加到项目中
  • 链接到包含链接和生成二进制文件所需的函数定义的库

否则,

  1. [简单快捷]使用提供的makefile
  2. [漫长而复杂的方法]编译每个所需的源文件,生成对象文件,然后将它们链接在一起以生成二进制文件

相关内容

  • 没有找到相关文章

最新更新