GoogleMapsSDK:架构x86_64的未定义符号

时间:2015-06-08 15:11:09

标签: ios linker-errors google-maps-sdk-ios undefined-symbol

我正在尝试安装Google maps SDK,运行时遇到此错误:

        // read in the file
        d3.csv("gender_ratio.csv", function(error, data) {
        var ageNames = d3.keys(data[0]).filter(function(key) { return key !== "Perioden"; });

        data.forEach(function(d) {
            d.ages = ageNames.map(function(name) { return {name: name, value: +d[name]}; });
        });

        // set the domain
        x0.domain(data.map(function(d) { 
            if (d.Perioden > 1949) {
                return d.Perioden;
            }
        }));

        // draw the bars
        Perioden.selectAll("rect")
            .data(function(d) { return d.ages; })
            .enter().append("rect")
            .attr("width", x1.rangeBand())
            .attr("x", function(d) { return x1(d.name); })
            .attr("y", function(d) { return y(d.value); })
            .attr("height", function(d) { return h - y(d.value); })
            .style("fill", function(d) { return kleur(d.name); });

8 个答案:

答案 0 :(得分:43)

当我升级使用手动安装的旧版Google地图SDK的应用时,我注意到以下更改:

  • 需要链接到构建阶段中的 CoreBluetooth.framework Accelerate.framework - > Link Bundle with Libraries。
  • “其他链接器标志”下的 -all_load 标志将导致“重复符号”错误。 (改为使用 -ObjC 。)

如果您使用CocoaPods安装方法(根据他们当前的说明),它应该采用所需的框架,但它仍然会被 -all_load 弄乱。

答案 1 :(得分:11)

确保包含以下内容

GoogleMaps SDK框架和捆绑

GoogleMaps(扩展名为.framework)出现在您的根目录(.xcodeproj所在的位置)

您的xcode项目中引用了GoogleMaps(扩展名为.bundle)

关注框架

Accelerate.framework

AVFoundation.framework

CoreBluetooth.framework

CoreData.framework

CoreGraphics.framework

CoreLocation.framework

CoreText.framework

GLKit.framework

ImageIO.framework

的libc ++。dylib

libicucore.dylib

libz.dylib

OpenGLES.framework

QuartzCore.framework

Security.framework

SystemConfiguration.framework

构建设置

项目设置中的

架构值包括armv7。

其他链接器标志具有-ObjC,如果不存在则添加

答案 2 :(得分:9)

**_vImageBoxConvolve_Planar8, referenced from: (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)**

This required "Accelerate.framework". So, please add it.

Steps:
1)Build Phases -> Link Bundle with Libraries.
2)Click "+",
3)Select "Accelerate.framework". Finish.

===================================

Others errors required "CoreBluetooth.framework. So, please add it also in similar way.

答案 3 :(得分:4)

看起来Google的API需要CoreBluetooth用于Beacon位置。在您的构建阶段链接CoreBluetooth.framework,一切都应该没问题。

enter image description here

修改 请务必通过这些说明安装GoogleMaps以避免任何问题:https://developers.google.com/maps/documentation/ios/start

答案 4 :(得分:2)

我遇到同样的问题,在我的情况下,我有2个参考的GoogleMap.framework,我删除了旧的框架参考,问题得到了解决:)

  • 点击项目
  • 构建阶段 - > 将二进制文件链接到库 - >检查GoogleMaps.framework
  • 是否存在任何重复的引用
  • 如果是,则删除一个未添加的。

答案 5 :(得分:2)

**_vImageBoxConvolve_Planar8, referenced from: (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)**

This required "Accelerate.framework". So, please add it.

Steps:
1)Build Phases -> Link Bundle with Libraries.
2)Click "+",
3)Select "Accelerate.framework". Finish.

答案 6 :(得分:0)

从(目标 - >构建设置 - >其他链接器标记)中删除 -all_load 标记解决了我在使用可可豆荚时遇到的问题。

答案 7 :(得分:0)

如果今天有人遇到这种情况,在 Build Settings 中链接CoreLocation.framework二进制代码对我来说是成功的秘诀