2009-12-21 9 views
16

(मैं ऐसा करने का प्रयास क्यों कर रहा हूं: मुझे विंडोज़ पर libpng (परीक्षण और त्रुटि के कई घंटों के बावजूद) के लिए प्री-बिल्ट बाइनरी का उपयोग करने में कोई भाग्य नहीं है, और इसलिए अब मैं इसे संकलित करने की कोशिश कर रहा हूं। मुझे this helpful blog post मिला यह एक माइक्रोसॉफ्ट विजुअल स्टूडियो 2008 प्रोजेक्ट फाइल के साथ पूरा के विषय में, लेकिन दुर्भाग्य से अभी भी नहीं इसका इस्तेमाल करने में सक्षम है।)माइक्रोसॉफ्ट विजुअल स्टूडियो '08 के साथ libpng संकलित करते समय "त्रुटि LNK2005:" (पहले से परिभाषित stdlib फ़ंक्शंस) से कैसे बचें?

यह सफलतापूर्वक संकलित जब here पाया zlib बाइनरी को जोड़ने, लेकिन जब एक परीक्षण से लिंक करने का प्रयास फ़ाइल मैं इन्हें प्राप्त:

 
    C:\Documents and Settings\Administrator\My Documents>cl "C:\Documents and Settin 
    gs\Administrator\My Documents\test.c" "C:\Documents and Settings\Administrator\M 
    y Documents\libpng.lib" -I "C:\Documents and Settings\Administrator\My Documents\include" 

    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 
    Copyright (C) Microsoft Corporation. All rights reserved. 

    test.c 
    Microsoft (R) Incremental Linker Version 9.00.30729.01 
    Copyright (C) Microsoft Corporation. All rights reserved. 

    /out:test.exe 
    test.obj 
    "C:\Documents and Settings\Administrator\My Documents\libpng.lib" 
    MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _abort already defined in LIBCMT.lib(
    abort.obj) 
    MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fread already defined in LIBCMT.lib(
    fread.obj) 
    MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _malloc already defined in LIBCMT.lib 
    (malloc.obj) 
    MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _free already defined in LIBCMT.lib(f 
    ree.obj) 
    MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: ___iob_func already defined in LIBCMT 
    .lib(_file.obj) 
    LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; u 
    se /NODEFAULTLIB:library 
    test.exe : fatal error LNK1169: one or more multiply defined symbols found 

इन त्रुटियों को ठीक करने के लिए के रूप में कुछ प्रकाश डाला करने के लिए किसी को भी देखभाल कर सकता है?

उत्तर

37

समस्या यह है कि दो परियोजनाओं में से एक मल्टी पिरोया DLL उपयोग कर रहा है अन्य जबकि मल्टी पिरोया (DLL बिना उस में) प्रोजेक्ट गुण में उपयोग कर रहा है -> विन्यास गुण -> C/C++ - > कोड पीढ़ी।

कई बार मुझे हुआ।

"सिंक्रनाइज़" करने के लिए है कि रिहाई के लिए भी स्थापित करने बनाता है सुनिश्चित करें, और प्रत्येक संभव संयोजन (डिबग, गैर डिबग, आदि)

+3

धन्यवाद के लिए! 10 मिनट में हल सिरदर्द के घंटे :) – Sam

+0

एक्सडी धन्यवाद: डी [... कम से कम 15 वर्ण] –

+0

वह ... बिल्कुल अद्भुत था। इसके अलावा, डितो, सैम। – tjklemz

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