2012-01-18 10 views
6

मैंने अपने कोड में निम्नलिखित पुस्तकालय शामिल किए हैं।दो बाहरी पुस्तकालयों में समान नाम वाले कार्यों के लिए विरोधाभासी प्रकार को हल करना

#include <minix/drivers.h> 
#include <curl/curl.h> 
#include <sys/stat.h> 
#include <time.h> 
#include <assert.h> 
#include <string.h> 

अब मैं निम्नलिखित त्रुटि मिलती है:

In file included from /usr/local/include/curl/curlbuild.h:152 
       from /usr/local/include/curl/curl.h:34 
       from xxx.c:2 
/usr/pkg/gcc44/lib/gcc/i686-pc-minix/4.4.3/include-fixed/sys/socket.h:134: error: conflicting types for '_send' 
/usr/include/minix/ipc.h:152: note: previous declaration was here 

जहाँ तक मुझे पता के रूप में इसका मतलब है कि _send दो पुस्तकालयों (minix/drivers.h और curl/curl.h) अगर यह संभव है, मैं सोच रहा था में घोषित किया गया है इस समस्या को हल करें या किसी भी तरह से इसके आसपास काम करें?

+2

इस चर्चा में कई रणनीतियों रहे हैं: http://stackoverflow.com/questions/678254/c-function-conflict – TJD

+0

अगर मैं पूछ सकते हैं, ठीक है कि आपके कोड कर किया जा रहा। ऐसा लगता है कि इस तरह का ओवरलैप पहले से नहीं चलाया गया था। –

+0

समस्या समय के बजाय संकलन समय पर दिखा रही है। क्या आप वाकई अपने प्रोग्राम में 'curl.h' और 'drivers.h' दोनों की आवश्यकता है? –

उत्तर

1

चूंकि आप मिनीिक्स पर हैं, तो आप objcopy के साथ पुस्तकालयों में से एक (या दोनों) को संशोधित कर सकते हैं। यदि आप _send पुस्तकालयों में से एक से की जरूरत नहीं है,

--redefine-sym old=new 
     Change the name of a symbol old, to new. This can be useful when 
     one is trying link two things together for which you have no source, 
     and there are name collisions. 

या: आदमी पृष्ठ से

-L symbolname 
--localize-symbol=symbolname 
     Make symbol symbolname local to the file, so that it is not visible 
     externally. This option may be given more than once. 

बेशक, आप उसके अनुसार अपनी हेडर अद्यतन करने के लिए की आवश्यकता होगी। मैं संशोधित लाइब्रेरी और शीर्षकों को नामकरण करने की भी सिफारिश करता हूं ताकि यह स्पष्ट हो कि आपने उन्हें संशोधित किया है।

+0

सटीक रूप से प्रश्न में लिनक्स कहां इंगित किया गया है? – mlp

+0

अच्छा बिंदु। मैंने गलत तरीके से सोचा था कि मिनिक्स लिनक्स था ([यह नहीं है] (http://www.minix3.org/))। हालांकि, [objcopy अभी भी उपलब्ध है] (http://wiki.minix3.org/en/DevelopersGuide/NewBuildSystem)। –

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

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