2010-01-18 46 views

回答

3

您可以使用碳API的CFNotificationCenterPostNotification 。 碳是純的C.

文檔和代碼示例here

+0

我認爲Carbon正在走向Dodo的道路。事實上,使用Carbon將你鎖定在64位之外。 我注意到你提到了CFNotificationCenterPostNotification,雖然它看起來像一個Core Foundation類。這可能是好的。 – 2010-01-18 14:59:57

+4

是的,它不是碳。核心基礎,核心服務以及其他一些可以通過Carbon框架訪問的框架都可以在64位版本中找到。事實上,甚至一些碳的部分(例如,碳事件管理器)可用於64位。 – 2010-01-18 17:54:58

4

我建議,我必須爲我正在開發的一個項目執行此操作,您可以提供一些obj-C++文件,它們同時提供C/C++ api和內部使用obj-c代碼觸發文檔閃爍。

本質上你創建一個標準的C/C++頭文件。在代碼中,您將該文件製作爲.m或.mm文件。

這樣就可以讓你在問題中直接寫入obj-c一行代碼到C/C++函數中,並且由於頭文件是純C/C++,它不會是非.mm的編譯器錯誤項目中的文件。

這當然假定使用兩種語言的編譯器(如GCC)進行編譯。

這種方法的簡單和(測試)的例子是:

TriggerBounce.h

void TriggerBounce(char * filepath); 

TriggerBounce.m

#import <Cocoa/Cocoa.h> 

void TriggerBounce(char * filepath) { 
    NSString *pathToFile = [NSString stringWithCString:filepath encoding:NSUTF8StringEncoding]; 
    [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"com.apple.DownloadFileFinished" object:pathToFile]; 
}