Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[C-Ruby-ext] ajouter un header Carbon

6 réponses
Avatar
pere.noel
j'ai l'intention de produire une extension Ruby écrite en C (total
newb), mon squelette de classe "RAliasFile.c" tourne correctement, sans
addition d'aucune fonction Carbon.

maintenant j'ajoute une fonction et le header idoine :

#include "/Developer/Headers/FlatCarbon/CFURL.h"

CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
(CFStringRef)_fullAliasPath, kCFURLPOSIXPathStyle, NO);

et j'ai déjà une erreur en ce qui concerne :

#include "/Developer/Headers/FlatCarbon/CFURL.h"

qui fait vraissemblablement appel à "OpenTransport.h" :

/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.
framework/Headers/OpenTransport.h:723: error: parse error before numeric
constant


donc je suppose qu'il y a une sorte de traduction des headers à faire ?

si au lieu de :
#include "/Developer/Headers/FlatCarbon/CFURL.h"

j'ajoute carrément (ce que j'ai fait en ObjC) :
//#import <Foundation/Foundation.h>
//#import <CoreServices/CoreServices.h>

là, j'ai une tripotée d'erreurs...
--
une bévue

6 réponses

Avatar
luc
Une bévue wrote:

#include "/Developer/Headers/FlatCarbon/CFURL.h"

CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
(CFStringRef)_fullAliasPath, kCFURLPOSIXPathStyle, NO);


CF = CoreFoundation != Carbon

#include "/Developer/Headers/FlatCarbon/CFURL.h"


Non.

#include <CFUrl.h>

et ensuite l'option kivabien pour gcc (dans $CFLAGS si tu utilises
mkmf):

-I /System/Library/Frameworks/CoreFoundation.framework/Headers

Et c'est tout.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


CF = CoreFoundation != Carbon


bon, ben on apprend des choses dès le lundi mâtin ;-)


#include "/Developer/Headers/FlatCarbon/CFURL.h"


Non.

#include <CFUrl.h>


euh dans ce ca (use of <...>) c'est pas :

#import <CFUrl.h> ????


et ensuite l'option kivabien pour gcc (dans $CFLAGS si tu utilises
mkmf):

-I /System/Library/Frameworks/CoreFoundation.framework/Headers

Et c'est tout.


ok, merci, c'est bon.


--
une bévue


Avatar
luc
Une bévue wrote:

euh dans ce ca (use of <...>) c'est pas :

#import <CFUrl.h> ????


#import est une directive Objective-C, C ne connait que #include.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:

#import est une directive Objective-C, C ne connait que #include.


ok, donc avec "#include "CFURL.h""

j'ai un pb au run time :

dyld: NSLinkModule() error
dyld: Symbol not found: _CFURLCreateWithFileSystemPath
Referenced from: ./osx/ralias/raliasfile.bundle
Expected in: flat namespace

je suppose qu'un autre flag doit-être changé ?

du genre avoir :

allow_undefined_flag="-flat_namespace -undefined suppress
-read_only_relocs suppress"


apparemment, c'est un pb récurent rencontré sur # mailing-list, solution
peu claire pour moi ))
--
une bévue

Avatar
luc
Une bévue wrote:

ok, donc avec "#include "CFURL.h""


#include <CFUrl.h> avec des <...>.

j'ai un pb au run time :

dyld: NSLinkModule() error
dyld: Symbol not found: _CFURLCreateWithFileSystemPath
Referenced from: ./osx/ralias/raliasfile.bundle
Expected in: flat namespace


Si tu utilises un appel à une lib ou à un framework, il faut linker le
framework...

Dans ce cas précis, il faut utiliser l'option "-framework
CoreFoundation" au link.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


Si tu utilises un appel à une lib ou à un framework, il faut linker le
framework...

Dans ce cas précis, il faut utiliser l'option "-framework
CoreFoundation" au link.


j'avais supputé qu'il retrouvait ses billes ))

bon merci je vois le pb.
--
une bévue