2010-08-04 6 views
5

mswcr90.dll के खिलाफ mingw gcc के साथ कैसे लिंक करें? मैं -lmsvcr90 की कोशिश की, यहां कम से कम उदाहरण है:mswcr90.dll के खिलाफ mingw gcc के साथ कैसे लिंक करें?

R6034

 
    An application has made an attempt to load the C runtime library incorrectly. 
    Please contact the application's support team for more information. 

:

#include <stdio.h> 
int main(int argc, const char *argv[]) { 
    printf("%s\n", "hello"); 
    return 0; 
} 

मेरे ओएस Win7 है, MinGW जीसीसी के साथ 4.5.0

$ gcc -v 
... 
gcc version 4.5.0 (GCC) 
$ gcc hello.c -lmsvcr90 
$ a 

तो मैं यह त्रुटि आई

मुझे कौन सा हिस्सा याद आ रहा है?

edit1:

@ user440813 लगता है मेरी MinGW तुम्हारा से बहुत अलग है।

$ gcc h.c -nostdlib -lmsvcr70 -lgcc -o h.exe 
d:/mingw/bin/../lib/gcc/mingw32/4.5.0/libgcc.a(__main.o):(.text+0x5a): undefined reference to `atexit' 
d:/mingw/bin/../lib/gcc/mingw32/4.5.0/libgcc.a(__main.o):(.text+0xc2): undefined reference to `atexit' 
collect2: ld returned 1 exit status 

तब मैं int atexit (void (* function) (void)) {return 0;} मज़ाक उड़ाया और R6034 फिर से मिल गया ...

उत्तर

4

बजाय

gcc hello.c -nostdlib -lmsvcr90 -lgcc -o hello.exe 

की कोशिश करो। मुझे आश्चर्य है कि आपका मूल संकलन प्रयास सफल रहा है, क्योंकि msvcr90 और msvcrt (जो डिफ़ॉल्ट रूप से MinGW लिंक) के बीच विरोधाभासी परिभाषाएं होनी चाहिए थीं। इस तरह, msvr90 लिंक हो जाता है, विरोधाभासी msvcrt नहीं है, लेकिन रनटाइम लाइब्रेरी को प्रारंभ करने के लिए libgcc जोड़ा जाता है।

मेरे पास मेरे कंप्यूटर पर msvcr90.dll नहीं है, लेकिन मैं यह सत्यापित करने में सक्षम था कि समान आमंत्रण msvcr100.dll के साथ काम करता है।

संबंधित मुद्दे