【发布时间】:2011-10-16 12:06:15
【问题描述】:
我找到了示例和帖子
- 创建用于 C++ 应用程序的静态 C++ 库
- 创建用于 Objective C 应用程序的静态 Objective C 库。
我几天来一直找不到并且一直在纠结的是创建静态 C++ 库以在 XCode 4 下的 Objective-C 应用程序中使用的正确方法。
我只想使用这个非常简单的代码进行测试:
#include <iostream>
#include "myCppLib.h"
using namespace std;
extern "C" void show_the_world() {
cout << "Hello, world!\n";
}
我使用 armv6/armv7 目标、GCC 4.2 编译器、将“C++ 标准库类型”链接为“静态”并将“默认隐藏符号”设置为“是”,如静态 C++ 库的 Xcode 帮助所述。
我的 Objective-C 应用程序调用了关于 std++ 库的“show_the_world”函数错误,似乎未包含或未正确引用:
Undefined symbols for architecture armv6:
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in libmyCppLib_dev.a(myCppLib.o)
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_show_the_world in libmyCppLib_dev.a(myCppLib.o)
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in libmyCppLib_dev.a(myCppLib.o)
"std::cout", referenced from:
_show_the_world in libmyCppLib_dev.a(myCppLib.o)
ld: symbol(s) not found for architecture armv6
collect2: ld returned 1 exit status
我确信我为正确的体系结构编译了库,所以在另一个设置或我的代码中一定有问题。
欢迎任何帮助!
最好的问候, 吉米
【问题讨论】:
-
这个帖子可能会有所帮助 - stackoverflow.com/questions/376966/…。
-
我已经新建了这篇文章,但由于我的英语“不太好”,我没有在这篇文章中找到答案。在您将我重定向回此之后,我花了更多时间 - 现在它可以工作了:) 重点是将 std++ 库也包含到生成的 Objective-c 项目的编译中。所以,非常感谢!
-
是的,libstdc++.dylib 解决了问题,太棒了!
标签: c++ objective-c xcode4