Как использовать CoreFoundation в QuickTime SDK для Windows? - PullRequest
1 голос
/ 15 июля 2011

Кто-нибудь может мне помочь скомпилировать этот код в Cygwin / MingW / VS20 (05 | 08 | 10)?Действительно, я хочу использовать CoreFoundation Framework в QuickTime SDK 7.3 для Windows.

#include <stdio.h>
#include <CoreFoundation.h>

int main () {
    CFStringRef hello = CFSTR("Hello, world.");
    return 0;
}

Я использовал этот MakeFile для его компиляции, в Cygwin / MingW, но я получаю ошибку: (

CC = gcc
LDFLAGS = -L"C:/Program Files/QuickTime SDK/Libraries" -lQTMLClient
CFLAGS = -Wall -mwindows -I"C:/Program Files/QuickTime SDK/CIncludes"

all: StringExample.c
$(CC) $(CFLAGS) $(LDFLAGS) -o StringExample StringExample.c -static

Беззаботное предупреждающее сообщение;)

StringExample.c: In function 'main':
StringExample.c:5:17: warning: unused variable 'hello' [-Wunused-variable]
C:\Users\censored\AppData\Local\Temp\ccJzEryl.o:StringExample.c:(.text+0x16): undefined reference to `_imp____CFStringMakeConstantString'
collect2: ld returned 1 exit status
make: *** [all] Error 1

В VisualStudio 2010 я получаю ту же ошибку:

LNK2019: unresolved external symbol __imp____CFStringMakeConstantString referenced in function _main

я загрузил Cocotron / CFLite / OpenCFLite, но у меня есть t been to compile this Projects or use that :( please help me... i mочень старался!

Спасибо, ребята, за помощь.

Мой английский очень плохой, мне очень жаль.

1 Ответ

1 голос
/ 16 июля 2011

ДА !!!
Мне наконец удалось!
Вы можете добавить CoreFoundation.dll статически в LDFLAGS MakeFile. (если itunes установлен в вашей системе, вы можете найти этот файл в «программные файлы / общие файлы / apple ...»)
Я скомпилировал этот код намного проще!

#include <stdio.h>
#include <stdlib.h>
#include <CoreFoundation/CoreFoundation.h>

#define BufferSize 1000

void show(CFStringRef formatString, ...) {
    CFStringRef resultString;
    CFDataRef data;
    va_list argList;

    va_start(argList, formatString);
    resultString = CFStringCreateWithFormatAndArguments(NULL, NULL, formatString, argList);
    va_end(argList);

    data = CFStringCreateExternalRepresentation(NULL, resultString, CFStringGetSystemEncoding(), '?');

    if (data != NULL) {
        printf ("%.*s\n\n", (int)CFDataGetLength(data), CFDataGetBytePtr(data));
        CFRelease(data);
    }

    CFRelease(resultString);
}

int main(){
    CFMutableStringRef mutStr;
    UniChar *myBuffer;

    myBuffer = malloc(BufferSize * sizeof(UniChar));
    mutStr = CFStringCreateMutableWithExternalCharactersNoCopy(NULL, myBuffer, 0, BufferSize, kCFAllocatorNull);
    CFStringAppend(mutStr, CFSTR("eAmin. "));

    show(CFSTR("Hello, %@"), mutStr);

    CFRelease(mutStr);
    free(myBuffer);

   return 0;
}


Отредактированный и без проблем make-файл:

CC = gcc
LDFLAGS = "CoreFoundation.dll"
CFLAGS = -ICIncludes

all: StringExample.c
$(CC) $(CFLAGS) $(LDFLAGS) -o StringExample StringExample.c -static


Удачи!

...