Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Catalina上使用部署10.10编译的MacOS应用程序在版本上崩溃<;达尔文导致的高塞拉 我们有一个多平台的桌面应用程序,它使用C++编写的通用组件。 该组件使用OpenSSL和PocoProject,两者都静态链接到库中 P.>在ObjuleC中有一个小框架,它基本上是C++代码的单H/CPP包装器。它使macOS开发人员能够轻松地使用该组件(使用Swift)。 框架的XCode项目以及应用程序的XCode项目已将DeploymentTarget设置为10.10(约塞米蒂)_C++_Objective C_Swift_Xcode_Macos - Fatal编程技术网

在Catalina上使用部署10.10编译的MacOS应用程序在版本上崩溃<;达尔文导致的高塞拉 我们有一个多平台的桌面应用程序,它使用C++编写的通用组件。 该组件使用OpenSSL和PocoProject,两者都静态链接到库中 P.>在ObjuleC中有一个小框架,它基本上是C++代码的单H/CPP包装器。它使macOS开发人员能够轻松地使用该组件(使用Swift)。 框架的XCode项目以及应用程序的XCode项目已将DeploymentTarget设置为10.10(约塞米蒂)

在Catalina上使用部署10.10编译的MacOS应用程序在版本上崩溃<;达尔文导致的高塞拉 我们有一个多平台的桌面应用程序,它使用C++编写的通用组件。 该组件使用OpenSSL和PocoProject,两者都静态链接到库中 P.>在ObjuleC中有一个小框架,它基本上是C++代码的单H/CPP包装器。它使macOS开发人员能够轻松地使用该组件(使用Swift)。 框架的XCode项目以及应用程序的XCode项目已将DeploymentTarget设置为10.10(约塞米蒂),c++,objective-c,swift,xcode,macos,C++,Objective C,Swift,Xcode,Macos,多年来,这种设置一直运行良好,但在将开发环境升级到Catalina(XCode版本11.14.1-Apple clang版本11.0.3(clang-1103.0.32.59))之后,我们现在面临着重大问题 我们的应用程序在HighSierra、Sierra、El Capitain、Yosemite(在Catalina上构建后,以10.10作为部署目标)上运行时发生严重崩溃 应用程序尝试动态加载/usr/lib/libSystem.B.dylib并调用chkstk(checkstack)方法。我

多年来,这种设置一直运行良好,但在将开发环境升级到Catalina(XCode版本11.14.1-Apple clang版本11.0.3(clang-1103.0.32.59))之后,我们现在面临着重大问题

我们的应用程序在HighSierra、Sierra、El Capitain、Yosemite(在Catalina上构建后,以10.10作为部署目标)上运行时发生严重崩溃

应用程序尝试动态加载/usr/lib/libSystem.B.dylib并调用chkstk(checkstack)方法。我猜是编译器添加了这个检查

<>我用OTooC++检查了C++库,它们对共享库没有任何依赖关系。 我从oTool中看到,是macOS框架包装器添加了这种依赖性

我们的开发人员希望使用最新的xcode/swift版本,所以我们不想回到旧的macOS/xcode版本


我如何回避这个问题?是否有任何编译器标志可以提供帮助?

问题在于如何编译OpenSSL和PocoProject的静态库。还需要将部署目标设置为10.10来编译它们。部署目标将阻止编译器插入对chkstk函数的调用

更一般地说,必须使用设置的部署目标编译所有代码,以便将其成功部署到早于构建操作系统的操作系统版本


直接调用编译器时,可以将
-mmacosx version min=10.10
作为编译器选项传递,以设置部署目标。或者,您可以将环境变量
MACOSX\u DEPLOYMENT\u TARGET
设置为“10.10”,以便编译器调用实现相同的功能。

听起来很合乎逻辑!现在在执行“export MACOSX_DEPLOYMENT_TARGET=10.10”之后重新编译openSSL和Poco……需要注意的一点是:当您使用早于SDK的部署目标进行构建时,编译器仍然知道晚于部署目标的API。因此,例如,配置脚本将找到它们。但它们将是弱进口的。当在早期版本的操作系统上实际运行时,它们将解析为NULL。如果代码不希望在运行时检查可用性,它将崩溃。
Code Type:             X86-64 (Native)
Parent Process:        bash [345]
Responsible:           XXXCoreMacOSTestApp [845]
User ID:               501

Date/Time:             2020-05-18 21:45:43.354 +0200
OS Version:            Mac OS X 10.13.6 (17G66)
Report Version:        12
Anonymous UUID:        2FE97D01-7DEF-32CB-E57B-CDFB7A600D8F

Sleep/Wake UUID:       68646DF3-E40E-463D-A390-E90F56D5EA6E

Time Awake Since Boot: 3200 seconds
Time Since Wake:       1700 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    DYLD, [0x4] Symbol missing

Application Specific Information:
Performing @selector(Test:) from sender NSButton 0x7fcb724207a0

Dyld Error Message:
  Symbol not found: ____chkstk_darwin
  Referenced from: /Users/USER/Desktop/XXXCoreMacOSTestApp.app/Contents/MacOS/../Frameworks/XXXCoreMacOSWrapper.framework/Versions/A/XXXCoreMacOSWrapper
  Expected in: /usr/lib/libSystem.B.dylib

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   dyld                           0x0000000114a2f24a __abort_with_payload + 10
1   dyld                           0x0000000114a2ebbc abort_with_payload_wrapper_internal + 89
2   dyld                           0x0000000114a2ebe9 abort_with_payload + 9
3   dyld                           0x0000000114a02482 dyld::halt(char const*) + 354
4   dyld                           0x0000000114a025a9 dyld::fastBindLazySymbol(ImageLoader**, unsigned long) + 170
5   libdyld.dylib                 0x00007fff7b8a3292 dyld_stub_binder + 282
6   ???                           0x0000000106a48000 0 + 4406411264
7   com.xxx.XXXCoreMacOSWrapper 0x00000001067af2e7 ssl3_write_bytes + 2871
8   com.xxx.XXXCoreMacOSWrapper 0x00000001067e52ad ssl3_do_write + 61
9   com.xxx.XXXCoreMacOSWrapper 0x00000001067dc057 state_machine + 1271
10  com.xxx.XXXCoreMacOSWrapper 0x000000010665cf58 Poco::Net::SecureSocketImpl::connectSSL(bool) + 328
11  com.xxx.XXXCoreMacOSWrapper 0x000000010665d29b Poco::Net::SecureSocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&, bool) + 203
12  com.xxx.XXXCoreMacOSWrapper 0x000000010666047c Poco::Net::SecureStreamSocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&) + 28
13  com.xxx.XXXCoreMacOSWrapper 0x00000001066aad06 Poco::Net::HTTPSession::connect(Poco::Net::SocketAddress const&) + 22