gpt4 book ai didi

c++ - 在 Xcode 4 中构建用于 Objective-c 应用程序的静态 C++ 库

转载 作者:可可西里 更新时间:2023-11-01 15:55:57 25 4
gpt4 key购买 nike

我找到了示例和帖子

  • 创建用于 C++ 应用程序的静态 C++ 库
  • 创建用于 Objective C 应用的静态 Objective C 库。

我几天来一直找不到并苦苦思索的是,在 XCode 4 下创建用于 Objective-C 应用程序的静态 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++ 标准库类型”链接为“静态”并将“默认隐藏符号”设置为"is"进行编译,如静态 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

我确定我为正确的体系结构编译了库,所以其他设置或我的代码一定有问题。

欢迎任何帮助!

最好的问候,吉米

最佳答案

Jimmy Koerting 在评论中提供了正确的答案:应用程序需要链接到 libstdc++.dylib 以解析标准库符号。感谢 Jimmy Koerting,但我想在这里添加的另一件事是,如果您使用的是带有 iOS 6.1 的 xcode 最新版本,请添加此 libstdc++.6.dylib

关于c++ - 在 Xcode 4 中构建用于 Objective-c 应用程序的静态 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6882817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com