- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
因为我是所有 C++ 和 gcc 相关事物的新手,所以我需要了解一些可能很重要的东西。如果我在输出为静态库的新 iphone 项目中使用 .mm 文件,则会出现此错误:
“___gxx_personality_v0”,引用自:
如果我将 C++ 标准库类型从动态(默认)更改为静态,错误就会消失。这是SDK的限制吗?动态库中不能启用 Obj-C++ 扩展吗?请记住,我是新手,我只是假装知道我在说什么。我还想知道这些设置之间的区别,以及更改它们是否会产生潜在的负面影响。我的假设是否正确,因为动态库是在运行时加载的,而静态库是在构建时链接到最终二进制文件的?如果是这样,那么为什么 iPhone SDK 会允许构建动态库?迄今为止,您无法在 iPhone 上安装 3rd 方库并在应用之间共享它们。
更新有几个人做出了回应,我很感激这些答案。但是,我想澄清一些我原来的问题似乎被误解的事情。将文件类型从“.m”切换到“.mm”不是答案,而是触发异常的原因。情况是这样的,为 iPhone 开发一个静态库,它使用扩展名为“.mm”的 Obj-C++ 文件。然后在 iPhone 应用程序(或单元测试套件)中使用此库。除非客户端目标切换为使用“静态”而不是标准 C++ 库类型的默认“动态”,否则您将看到此错误。我最初认为我可能通过更改此设置引入了一个微妙的错误,但我现在试图了解其中的差异以及为什么默认设置的方式似乎与其典型用例相反。
最佳答案
Martin York 是正确的,您正在使用错误的编译器进行编译,但 OSX 的默认文件系统不区分大小写,因此您通常不能在实践中使用“.M”来指示 Obj-C++。您需要使用 .m 命名您的 Obj-C 文件,使用 .mm 命名您的 Obj-C++ 文件。
虽然您不能在 .m 文件中使用 Obj-C++,但您当然可以将 .m 文件链接到 C++ 代码。在同一个项目中混合使用 Obj-C、Obj-C++ 和 C++ 是没有问题的。只需正确命名文件,以便使用正确的编译器:
你是正确的,你不能在运行时在 iPhone 上加载私有(private)动态库。 Xcode 允许它有两个原因:Mac 确实允许动态库(因此在基于 SDK 的 IDE 中有特殊情况代码会很痛苦),Apple 开发人员可以并且确实在 iPhone 上创建动态库。所以 Xcode 不禁止它;他们只是不给你一个模板。
关于c++ - XCode 和 iPhone SDK : C++ Standard Library Type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1756785/
JavaScript Standard Style 翻译: Português, Spanish, 繁體中文, 简体中文 standard 规则列表,太多不必阅读。 了解 standard 的最好方式
我有一个 exec我使用 outputproperty 将其输出放入属性的任务属性。该命令可能会向 stderr 打印一些错误,我不希望将这些错误包含在输出中(因为输出被馈送到另一个命令中),而是要打
标题说明了一切 - 如何将 .NET 标准库标记为符合 CLS? 我用 C# 编写了一个简单的库,目标是 .NET Standard 1.0 框架。它包括两个枚举: public enum Align
我有一个写入错误输出的 PowerShell 脚本。该脚本可以简单如下: Write-Error 'foo' Start-Sleep -s 5 Write-Error 'bar' 我实际调用的脚本产生
对于完整的 .NET 项目,您可以在 Project Properties > Application tab > Assembly Information.. 中勾选一个框以使项目 COM 可见。
我将我的项目 ( https://github.com/MarkKhromov/The-Log) 迁移到 .NET Standard 2.0,但我的应用程序构建已损坏。我该如何解决这个问题? 我的解决
互联网上的许多文章都使用“标准输入/输出/错误流”术语好像每个术语都与使用的“标准输入/输出/错误设备”术语具有相同的含义在其他文章上。例如,很多文章说标准输出流默认是监视器,但可以重定向到文件、打印
我正在尝试从 https://github.com/go-yaml/yaml 导入 go-yaml ,并且我看到了 Google 未提供帮助的错误。 我运行了 go get gopkg.in/yaml
在列出 TimeZoneInfo.GetSystemTimeZones 返回的 TimeZoneInfo 的所有 Id 属性时,出现了两个版本的 EST:美国东部标准时间和东部标准时间。有什么区别?
问题: 如函数的 C 引用页所述,c16rtomb,来自 CPPReference ,在注释部分下: In C11 as published, unlike mbrtoc16, which conve
我想使用 go 语言从我的数据库中检索一些数据。这是我在文件 main.go 中的代码的开头 package main import ( _ "github.com/go-sql-driver
我一直在通过STM32F4发现进行音频项目,我注意到一件事,所有I2S标准仅适用于一个麦克风(取决于标准使用单独的位的哪个边缘)。例如飞利浦(Philips),MSB或LSB标准使用下降沿作为位触发,
有没有标准定义了 语法 和 语义的 汇编语言 ?与语言类似 C 有 ISO 标准和语言 C# 有 ECMA 标准?是只有一种标准,还是有更多标准? 我问是因为我noticed那个汇编语言代码看了不同
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 1年前关闭。 Improve this
我们正在内部构建API,并且经常传递带有多个值的参数。 他们使用:mysite.com?id=1&id=2&id=3 代替:mysite.com?id=1,2,3 我赞成第二种方法,但我很好奇是否真的
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
我认为有很多人不知道RFC(征求意见)。我知道它们在逻辑上是什么,但是有人能为新开发人员提供一个很好的描述吗?另外,共享一些有关如何使用和阅读它们的资源也很好。 最佳答案 这个术语来自互联网的前身AR
我找不到 Somaliland 的两个字母的国家/地区缩写,可能是因为它不是一个国家,而是正如维基百科所说:“一个未被承认的 self 宣布的事实上的主权国家,被国际承认为索马里的一个自治区”。尽管如
我正在编写一款蜜 jar 软件,该软件将对其交互进行大量记录,我计划记录纯文本 .log 文件。 我有两个问题,来自不太熟悉服务器日志方式的人。 首先,我该如何分解我的日志文件,我假设运行一个月后我不
我最近负责调试两个不同的程序,这两个程序最终至少需要共享一个 XML 解析脚本。一个是用 PureMVC 编写的,另一个是从头开始构建的。虽然最初从头开始编写是有意义的(它节省了大量内存,但内存问题已
我是一名优秀的程序员,十分优秀!