2011-07-15 7 views
1

誰でもCygwin/MingW/VS20(05 | 08 | 10)でこのコードをコンパイルできますか?
実際、私はWindows用のQuickTime SDK 7.3でCoreFoundation Frameworkを使いたいと思っています。 、VisualStudioを2010年)Windows用のQuickTime SDKでCoreFoundationを使用するには?

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 

と、

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

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

iはCygwinの/ mingwので、それをコンパイルするためのこのMakefileを使用するが、私はエラー:(

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 

ケアフリー警告メッセージを取得します同じエラーが表示される:

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

はい!
私はついに成功しました!
LDFLAGS MakeFileに静的にCoreFoundation.dllを追加できます。 (あなたのシステムにiTunesがインストールされていれば、このファイルは "program files/common files/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; 
} 


編集&なし問題のmakefile:

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

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


グッドラック!

関連する問題