问题标签 [clang++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 OS X 上与 clang++ 链接会产生大量未找到符号的错误
我正在尝试使用 clang++ 编译器在 OS X 10.8 上编译一些 C++ 代码(包括 C++11 功能)。我有一个生成目标文件OK的makefile,然后在命令上:
我收到大量关于未找到架构 x86_64 的符号的错误。该代码在使用 g++ 的 *nix 系统上运行良好,并适当地更改编译器标志以支持 C++11。要编译 *.o,我正在这样做:
编辑:链接命令的输出是:
xcode - 为什么我的班级只在调试版本中响应我的全局 SEL 变量?
我在一个个人项目中使用了 Objective-C++,我发现SEL
在全局范围内带有初始化程序的变量有奇怪的行为。考虑这个可运行的 Objective-C++ 片段:
在普通的 Objective-C 中,全局变量必须具有 C 规定的常量初始化器,因此static SEL globalSelector = @selector(closeWindow)
无效。这个限制在 C++ 中被取消,因此在 Objective-C++ 中,它可以毫无问题地编译。
这将是预期的输出:
选择器=<某个地址>; 名称=关闭窗口;响应=1
选择器=<某个地址>;名称=关闭窗口;响应=1
closeWindow 调用 [3 次]
这确实是我在调试中得到的:
但是,Release 中出现了问题:
请注意,虽然它们仍然具有相同的名称,但选择器没有相同的地址,并且Foo
只响应局部变量中的选择器。
有趣的是,这个问题似乎与名称有关。如果我将方法的名称更改为,例如foo
,它可以正常工作。
我是否缺少某些东西或依赖未定义的行为?
cocoa - CocoaPods:与 libPods.a 中定义的 C++ 符号链接
我最近开始研究将 levelDB 集成到我的项目中的 podSpec 文件。(https://github.com/iljaiwas/Podspecs/blob/master/LevelDBPodSpec/0.0.1/leveldb.podspec)
但是,当我从主目标中的 .mm 文件中引用任何 C++ 符号时,会出现如下链接器错误:
这就是编译器调用的样子
据我了解,缺少的 ::Open 调用包含在 libPods.a 中
看来我可以通过将主应用程序的“编译器”设置从 Apple LLVM 4.2 更改为 LLVM GCC 4.2 来解决链接器错误,但是这个编译器会阻塞 Objective-C 2.0 的特性,如下所示:
感谢您对我可能做错的任何指示,Ilja
c++ - 通过静态库进行条件链接
我正在用 C++ 编写一个大型静态库。在那个库中,我使用了大量静态和动态库中的符号。当我“制作”它时,我不需要链接任何库,因为它是静态的。这是我的问题:我的静态库非常通用。它为同一个接口提供了多个实现(您可以看到驱动程序之类的实现;libA 提供自己的实现,而 libB 提供其等等)。这些实现不打算一起使用,因为其中一些是平台相关的。
链接我的库时出现问题。即使客户端的代码不依赖于任何 lib 符号,客户端也必须链接到我的 lib 使用的符号的所有库。例如,如果客户的代码只依赖于libA,他仍然必须链接到libB,因为我的静态库中有一些来自libB的符号。
您是否知道一种方法来排除这种行为,并且只链接实际使用的库,在客户端代码中推断符号?
谢谢你。
c++11 - clang++ mac os x c++11 链接器问题
我在使用 xcode 4.6.2 中的 clang++ 在 mac os x 10.8.3 下编译带有“-std=c++11 -stdlib=libc++”的程序时遇到问题。
当我尝试使用 std::mem_fn() 或(已弃用)std::mem_fun_ref() 时,我收到链接器错误“未找到符号”。在 c++03 标准下,相同的代码(使用 std::mem_fun_ref 而不是 std::mem_fn)编译和链接没有任何问题。
如果我在对象上调用相同的成员函数而不通过 mem_fn 或 mem_fun_ref 引用它,则程序编译并运行没有任何问题。这是一个clang++问题,一个mac os问题,还是我做错了什么?
编码:
编译日志:
c++ - g++ ,基于范围和矢量化
考虑以下基于 C++ 11 中 for 循环的范围
是否有g++
可以clang++
加快编译代码的优化标志?
我不是在谈论任何for
循环,我只是在考虑这个新的 C++11 构造。
c++ - 使用clang ++和g ++编译时出现c ++错误
我正在研究一个修改用户程序控制流的项目。我为此使用llvm。最后,我使用 clang++ 生成了一组 .s 文件。然后我使用 g++ 将它们全部合并。我不能使用 clang++(而不是 g++),因为它在这个阶段给出了很多错误(这不是当前的问题)
对于 c 程序(gcc 和 clang),一切正常。但是对于 c++ 用户代码(g++,clang++),我在执行时收到以下错误
g++ -O3 -rdynamic *.s -o main.exe -Wa,-Iressource -lstdc++ -lm -ldl
根据我在互联网上的搜索,对于大多数人来说,发生此错误是因为他们使用 clang(而不是 clang++)。
铛
clang --version clang 版本 3.1 (branches/release_31)
目标:x86_64-unknown-linux-gnu
线程模型:posix
克++
g++ --版本
g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
我不知道实际问题出在哪里。但我知道,如果我简单地使用 clang++ 生成 *.s 文件,然后使用 g++(没有我的 llvm 通行证)它工作正常。因为它 llvm 直到最后都不会抱怨,所以 g++ 会这样做,我不知道实际错误发生在哪里。正如我之前所说,如果原始代码是“C”(通过使用 clang 和 gcc),它可以正常工作。
任何有关如何继续或解决问题的解决方案的帮助表示赞赏。
特别是可能导致(在这种情况下)
- 对 __cxx_global_var_init 的未定义引用
- 以 a 为键的全局构造函数
macos - clang support of aggregation initialization on Mac OS X
I'm trying to compile C++11 list congregation initialization on clang++ on mac.
This is the command for the compilation.
I got no matching constructor error.
I tried with XCode
I also tried with clang++ from port
I got the same result. What might be wrong?
c++11 - 为什么clang++缺少前向列表?
forward_list
我写了一个简单的C++ 程序,它依赖于
然而,当我在我的 Mac 上编译这个程序时clang++ my_program.cpp -std=c++11 -o my_program
,我得到了这个错误:
为什么clang找不到forward_list
?其他 C++11 功能正在运行。例如,auto
关键字有效,尽管出现了一个警告,告诉我这auto
是 C++11 功能。
c++ - Objective-C++ 和运算符 ->
我对operator ->
Objective-C 有疑问。
我想在 ObjC 类上使用 C++ 包装器。
所以我创建了我的课程:
以及包装类:
当我尝试通过operator User*
它访问支持对象时效果很好:
但是当我尝试通过operator ->
我有以下错误:
看来我的理解operator ->
是错误的。
有人对我做错了什么以及如何解决这个问题有解释吗?
也许还有另一种直接访问支持对象的方法?