Tag: macos

R包与C / C ++和openMP:如何在“mypackage / src /”文件夹下制作“Makevars”文件?

我正在使用一些低级C/C++代码和openMP支持在Mac OSX上开发R包。 C++代码是使用Rcpp包编写的。 我的全局”Makevars”文件放在~/.R/文件夹下。 该文件如下所示。 CC=clang-omp CXX=clang-omp++ PKG_CFLAGS=Wall -pedantic PKG_CFLAGS= -fopenmp PKG_CXXFLAGS= -fopenmp PKG_LIBS= -fopenmp -lgomp 在这种配置下一切都很棒! 但是,现在我想为自己的编译构建特定于包的Makevars文件,以使包可移植。 我尝试的只是将全局Makevars文件移动到我的R pakcage src文件夹中。 但是,编译器抱怨它无法找到openMP头文件omp.h : ** libs clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I”/Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rcpp/include” -I”/Library/Frameworks/R.framework/Versions/3.2/Resources/library/bigmemory/include” -I”/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BH/include” -fopenmp -fPIC -Wall -mtune=core2 -g -O2 -c RcppExports.cpp -o RcppExports.o RcppExports.cpp:12:10: fatal error: ‘omp.h’ file not found #include ^ 1 error […]

在Mac OSX上接收电源通知(尤其是关机)

我正在用C编写一个用于Mac(Leopard)的应用程序,它需要在接收电源通知时做一些工作,例如睡眠,唤醒,关机,重启。 它通过launchd作为登录时的launchd运行,然后开始监视通知。 我用来做这个的代码如下: /* ask for power notifications */ static void StartPowerNotification(void) { static io_connect_t rootPort; IONotificationPortRef notificationPort; io_object_t notifier; rootPort = IORegisterForSystemPower(&rootPort, &notificationPort, PowerCallback, &notifier); if (!rootPort) exit (1); CFRunLoopAddSource (CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(notificationPort), kCFRunLoopDefaultMode); } /* perform actions on receipt of power notifications */ void PowerCallback (void *rootPort, io_service_t y, natural_t msgType, void *msgArgument) { […]

如何在Mac OS上获取video捕获设备(网络摄像头)列表? (C ++)

所以我需要的只是简单 – 当前可用的video捕获设备(网络摄像头)列表。 我需要在简单或C ++控制台应用程序中。 按列表我的意思是像这样的控制台输出: 1) Asus Web Camera 2) Sony Web Camera 所以看起来很简单,但我有一个要求 – 尽可能使用原生OS apis – 毕竟没有外部库 – 我们想要的就是打印出一个列表 – 不要飞到月球上!)(并没有使用Objective-C,please – pure C / C ++) 怎么办这样的事? 也来自这个系列: 如何在linux上获取video捕获设备列表? 以及使用正确,经过测试的答案获取摄像机名称的特殊细节 如何在Mac OS上获取video捕获设备列表? 正确的,尚未通过我的答案测试 如何在Windows上获取video捕获设备列表? 正确,经过测试的答案 如何使用Qt(跨平台)获取列表video捕获设备NAMES?

为什么C程序打印0D而不是0? (当EOF作为Ctrl + D发送时)

OSX 10.6.8,GCC 4.2 86_64 #include /* count lines in input */ main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) if (c == ‘\n’) ++nl; printf(“%d\n”, nl); } 跑 ./a.out 按ctrl+d发送EOF 0D 它应该只是0.为什么它附加D? 这是什么意思?

使用Semaphores的程序在Linux上运行良好…在Mac OSX上出现意外结果

我写了一个简单的程序,使用信号量解决了Readers-Writers问题。 它在Linux操作系统上运行完美,但是当我在Mac OSX上运行时,我得到了意想不到的结果,我无法弄清楚原因。 我的计划: #include #include #include #include #include void* function1(void* val); void* function2(void* val); // shared values volatile int X; volatile int Y; // declare semaphores sem_t s1; sem_t s2; main() { void* status; pthread_t thread1; pthread_t thread2; srand(time(NULL)); // initialize semaphores to zero sem_init(&s1, 0, 0); sem_init(&s2, 0, 0); pthread_create(&thread1, NULL, function1, NULL); […]

查看默认包括“gcc -v”在Mac OS X中包含C头的路径?

我尝试使用gcc -v在Mac OS X(Mavericks)中找到C编译器的默认包含路径: $ gcc -v Configured with: –prefix=/Applications/Xcode.app/Contents/Developer/usr –with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) Target: x86_64-apple-darwin13.0.0 Thread model: posix 它似乎告诉我路径是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 ,但我害怕这不是真正的道路。 我认为包含标准C库的真正途径是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include因为位于在后面的路径中,这是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sys/syscall.h 有没有人有关于如何在Mac OS X中查看C库的所有默认包含路径的想法?

用于Mac / Linux崩溃的Windows getch()相当于

我正在使用getch() ,我的应用程序立即崩溃。 包括做什么时: int main() { getch(); } 我找不到链接,但据说问题是它需要关闭缓冲或这些线路上的一些奇怪的东西,我仍然希望cout与跨平台代码一起工作。 我被告知要使用std::cin.get() ,但我希望应用程序在按下某个键时退出,而不是当用户输入一个字母或数字然后按Enter键退出时。 这有什么function吗? 代码必须在Mac(我的操作系统)和Windows下运行。 链接/编译不是问题 ; 我包含并在XCode中链接-lcurses ,而Windows使用 。

Swift:将未初始化的C结构传递给导入的C函数

我知道这个答案 ,但这不是一回事 – 那就是传递一个指针,用分配初始化。 我正在与具有以下结构定义的C库连接: typedef struct myStruct { unsigned char var [50]; } myStruct; 有一个函数可以传递结构的地址 – 通常基于堆栈而不是堆,因此: myStruct mine; initMyStruct(&mine); 这会初始化结构的内容 – 调用者不知道内存的内部格式,因此混淆。 在Swift中,我正在创建一个类,它将封装结构和与其上运行的其他C函数的接口。 class MyClass { var mine : myStruct init() { initMyStruct(&mine) // Error: Variable ‘self.msg’ passed by reference before being initialized } } 我不能为我的生活弄清楚如何初始化结构,或者如果可以替代使用一个点。 mine = myStruct() // Fails because you […]

Mac OS X El Capitan可以运行为Yosemite编译的软件,它需要/ usr / gnu64 / lib中的库吗?

对不起,有一些必要的背景 – 您可以尝试跳到问题标题。 从远古时代开始(无论如何,在上一个千年的某个地方),我创建了诸如/usr/gnu和/usr/gcc来保存自定义编译的GNU软件,与系统目录中的任何内容分开。 这对我来说非常适用于各种基于Unix的系统,包括自2002年以来的Mac OS X(Jaguar,10.2)。 (不使用/usr/local一个原因是IT管理部门维护它,并且它总是包含过时的代码 – 例如,它在大约5年前就可以使用Perl 4。使用其他名称可以避免与它们一起运行。) 在Mac OS X 10.11 El Capitan中,Apple推出了SIP(系统完整性保护)系统(描述了El Capitan的“无根”function,真的是“Ask Different”)。 这意味着我不能再创建诸如/usr/gnu或/usr/gcc ,即使它们与Apple所拥有的任何内容脱节。 我发现之前在这些目录中的软件已被隔离在这些目录中(其中UUID在您的机器上会有所不同,我可能有两个因为将El Capitan放到这台机器上是一个多步操作 – 一个单独的长和无聊的故事): $ ls -1 /Library/SystemMigration/History/ Migration-7D74B534-AA54-4A4A-8DCC-A5C2F28E1A39 Migration-9C0FE7A4-3445-4BD6-A512-35464EECCBC3 $ 然后在QuarantineRoot下的子目录中: $ ls /Library/SystemMigration/History/Migration-9C0FE7A4-3445-4BD6-A512-35464EECCBC3/QuarantineRoot/usr: gcc gnu32 gnu64 $ 但是,二进制文件是使用GCC和各种库编译的,因此它们目前不运行。 例如: $ otool -L bison bison: /usr/gnu64/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.1.0) /usr/gnu64/lib/libiconv.2.dylib […]

OSX El Capitan中可能的内存泄漏Valgrind

我收到一个possibly lost: 2,064 bytes in 1 blocks的警告possibly lost: 2,064 bytes in 1 blocks在OSX Yosemite上使用Valgrind时possibly lost: 2,064 bytes in 1 blocks 。 有没有解决这个问题? 我用brew安装了valgrind。 以下是如何重现的示例 ~/cat hello.c int main() { return 123; } ~/uname -a Darwin mac.local 15.2.0 Darwin Kernel Version 15.2.0: Fri Nov 13 19:56:56 PST 2015; root:xnu-3248.20.55~2/RELEASE_X86_64 x86_64 i386 MacBookAir6,2 Darwin ~/clang –version Apple […]