मुझे अपनी लाइब्रेरी को गतिशील रूप से लिंक करने की आवश्यकता है। मुझे बिल्कुल यकीन नहीं है कि समस्या क्या है। यह सब ठीक से संकलित, लेकिन मैं हमेशा NULL
सूचक के रूप में handle
पकड़ने:उचित उपयोग libdl और गतिशील रूप से जुड़े पुस्तकालय
void *handle;
char *error;
handle = dlopen ("./hw11-lib-michaelSchilling.so", RTLD_LAZY);
//same error comes up with full path as well as './hw11...'
if(!handle){
error = dlerror();
printf("%s\n", error);
printf("Error loading library.\n");
exit(1);
}
मैं इस त्रुटि से पारित कर दिया हो नहीं कर सकते और मुझे यकीन है कि क्या संभवतः गलत हो सकता है नहीं कर रहा हूँ। मुझे पूरा यकीन है कि मैंने सब ठीक से संकलित किया है। यहाँ संकलन चरणों मैं प्रयोग किया जाता हैं:
gcc -rdynamic -c hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so
gcc hw11-michaelSchilling-4.c -ldl -o hw11-michaelSchilling-4
मैं ऐसी त्रुटि
केवल ET_DYN और ET_EXEC लोड किया जा सकता हो रही है।
'गतिशील' के साथ? बस इसे '-shared' के साथ और दोनों के साथ करने की कोशिश की, लेकिन मुझे एक ही त्रुटि मिली। –
@MichaelSchilling: मुझे नहीं लगता कि '-गतिशील' समस्या के साथ कुछ भी करने के लिए है, तो आप इसे अपने कोड द्वारा आवश्यक होने पर भी रख सकते हैं। – NPE
@MichaelSchilling: क्या आपने '-c' हटा दिया है? – NPE