Tag: macos

在OS X 10.5上使用readline的rl_insert_text

所以,我正在尝试使用readline将一些默认文本填充到用户输入中,并且无法使其在OSX 10.5上运行: // rl_insert_text_ex.c // gcc -o rl_insert_text_ex rl_insert_text_ex.c -lreadline #include #include int my_startup_hook(void) { return rl_insert_text(“ponycorns”); } int main(int argc, char *argv[]) { char *line; rl_startup_hook = (Function*) my_startup_hook; line = readline(“What’s your favorite mythical animal? “); if (NULL == line || ‘\0’ == *line) { printf(“Nothing given… :(\n”); } else { printf(“That’s funny, […]

Mac OS和FreeBSD之间的fifos kqueue处理的区别?

我正在开发一个使用fifos for IPC的应用程序,并使用事件通知API(例如epoll或kqueue)来监视要读取的数据的fifos。 应用程序期望如果fifo的编写器终止,读者将通过事件通知API接收事件,允许读者注意到编写器终止。 我目前正在将此应用程序移植到macos中,并且我遇到了一些kqueue的奇怪行为。 我已经能够创建这种行为的再现者: #include #include #include #include #include #include #include #include #include #include static int child() { char child_fifo_path[64]; char parent_fifo_path[64]; printf(“Child %d\n”, getpid()); sprintf(child_fifo_path, “/tmp/child-%d”, getpid()); sprintf(parent_fifo_path, “/tmp/parent-%d”, getpid()); mkfifo(child_fifo_path, 0644); mkfifo(parent_fifo_path, 0644); int parent_fd = open(parent_fifo_path, O_RDONLY); if (parent_fd == -1) { perror(“open”); return EXIT_FAILURE; } unsigned char parent_val; read(parent_fd, […]

dl_iterate_phdr等效于Mac

我想迭代所有加载的共享库并获取它们的基地址和文件名。 这基本上是Linux上的dl_iterate_phdr 。 但我想为Mac做同样的事情。

C / C ++ – Mac OS X – 检查文件是否存在

检查文件是否存在的最佳方法是什么,如果没有创建它并使用mac库或其他来写信息?

在OS X上保留内存

在OS X中,Windows的VirtualAlloc相当于什么? 也就是说,如何保留一个连续的地址空间而不实际提交它,然后再提交它的块? 谢谢, 亚历克斯

从C / C ++扫描BLE设备

从“蓝牙设备访问指南” ,我读过蓝牙API应该可以从C或C ++访问。 我在IOBluetooth框架中找到了一些与蓝牙相关的C-header(IOBluetoothUserLib.h,Bluetooth.h),它包含用于定义搜索creteria的枚举和数据,但是我找不到任何采用这种枚举或数据结构的函数作为参数。 根据文档,我将不得不创建一个CBCentralManager但我找不到从C或C ++这样做的方法。 背景:我们使用OS / X作为开发平台,用于开发支持BLE的微控制器。 要更新此微控制器上的固件,我想编写一个BLE引导加载程序,我希望有一个命令行客户端来更新固件。 所有的代码都是用C ++编写的,我不想为这个小任务学习objectiv-C。 任何指针,文档,示例? 谢谢 托斯滕

cmake在OS X上找不到gl.h

我在OS X 10.10上尝试用GLUT和OpenGL构建一个C’项目’。 我把它简化为一个展示我的问题的最小例子。 我有以下CMakeLists.txt : cmake_minimum_required(VERSION 2.8) FIND_PACKAGE(OpenGL REQUIRED) FIND_PACKAGE(GLUT REQUIRED) if(OpenGL_FOUND) # never true, but printed as true link_directories(${OpenGL_LIBRARY_DIRS}) include_directories(${OpenGL_INCLUDE_DIR}) endif(OpenGL_FOUND) if(GLUT_FOUND) link_directories(${GLUT_LIBRARY_DIR}) include_directories(${GLUT_INCLUDE_DIR}) endif(GLUT_FOUND) # print all vars because wtf get_cmake_property(_v VARIABLES) foreach(_v ${_v}) message(STATUS “${_v}=${${_v}}”) endforeach() add_executable(main main.c) target_link_libraries(main ${GLUT_LIBRARY} ${OPENGL_LIBRARY}) main.c只是一个虚拟包括两个标题: #include #include int main() { return 0; } 现在, […]

无法将’UnsafePointer ‘类型的值转换为预期的参数类型’UnsafePointer ‘

我在Swift for OS X中使用外部C库。我得到一个值cda,它在C中定义为double* (它是指向double数组的指针)。 导入Swift时,它将类型识别为UnsafeMutablePointer。 我正在尝试将此指针和计数转换为双数组。 这是我正在使用的代码(假设arrlen是数组的正确计数): let doublearrptr = UnsafePointer(cda) let xptarr = UnsafeBufferPointer(start: doublearrptr, count:arrlen) 但是,在编译此代码片段时,我收到错误: Cannot convert value of type ‘UnsafePointer’ to expected argument type ‘UnsafePointer’ 我对Swift比较UnsafePointer ,但我很确定我无法转换为UnsafePointer 。 我尝试转换为UnsafePointer ,但是出现了同样的错误。 Swift确实认识到cda是一个UnsafeMutablePointer 。

如何让Xcode 8 C预处理器忽略// #defines中的注释

C预处理器( cpp )似乎应该正确处理此代码: #define A 1 // hello there int foo[A]; 我希望将A替换为1 。 会发生什么是A替换为1 // hello there ,这导致cpp -std=c99 test.c的以下输出: # 1 “test.c” int foo[1 // hello there]; 哪个是无效的C并且无法编译。 如何让cpp执行正确的替换? 关于编译器的注意事项:在mac上使用最新的(8.2.1,2016年12月)Xcode中的cpp ,所以我怀疑它是由于过时的编译器造成的。

OS X上带有胖库的架构x86_64的未定义符号

我自己从源代码构建了libcrypto.a和libssl.a ,将darwin64-x86_64-cc (对于64位)和darwin-i386-cc (对于32位)指定为OpenSSL的configure脚本。 使用lipo创建了fat库,并将它们作为依赖项添加到我的Xcode项目中。 但是,我得到一个未定义的符号错误: undefined symbols for architecture x86_64: “_OPENSSL_ia32cap_P”, referenced from: _AES_cbc_encrypt in libcrypto.a(aes-x86_64.o) ld: symbol(s) not found for architecture x86_64 注意:使用相同的技术适用于iOS。 lipo -detailed_info libcrypto.a揭示: Fat header in: libcrypto.a fat_magic 0xcafebabe nfat_arch 2 architecture i386 cputype CPU_TYPE_I386 cpusubtype CPU_SUBTYPE_I386_ALL offset 48 size 2700624 align 2^2 (4) architecture x86_64 cputype CPU_TYPE_X86_64 cpusubtype CPU_SUBTYPE_X86_64_ALL […]