"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > VS2010 में मिश्रित C ​​और C++ प्रोजेक्ट्स में LNK2001 लिंकर त्रुटियों का समाधान कैसे करें?

VS2010 में मिश्रित C ​​और C++ प्रोजेक्ट्स में LNK2001 लिंकर त्रुटियों का समाधान कैसे करें?

2024-12-21 को प्रकाशित
ब्राउज़ करें:639

How to Resolve LNK2001 Linker Errors in Mixed C and C   Projects in VS2010?

वीएस2010 में मिश्रित सी और सी परियोजनाओं में लिंकर त्रुटियों को हल करना

समस्या विवरण

विभिन्न वीएस2010 परियोजनाओं में सी कोड को सी प्रोजेक्ट में एकीकृत करने का परिणाम है सी कोड से सी फ़ंक्शन को कॉल करते समय एक लिंक त्रुटि में। त्रुटि, जिसे LNK2001 के रूप में पहचाना गया है, एक अनसुलझे बाहरी प्रतीक से संबंधित है।

समाधान

इस समस्या को सुधारने के लिए, विशिष्ट दिशानिर्देशों का पालन करके कोडबेस का उचित संगठन सुनिश्चित करें:

  1. मॉड्यूलराइज़ कोड:

    • प्रत्येक सी मॉड्यूल में एक हेडर फ़ाइल और एक स्रोत फ़ाइल शामिल होनी चाहिए।
    • फ़ाइलों और मैक्रोज़ दोनों के लिए नामकरण परंपराओं में स्थिरता बनाए रखें।
  2. हेडर और कार्यान्वयन बनाएं फ़ाइलें:

    • हेडर फ़ाइलों में फ़ंक्शंस को परिभाषित करें (उदाहरण के लिए, फ़ंक्शंस.एच) और उन्हें स्रोत फ़ाइलों में लागू करें (उदाहरण के लिए, फ़ंक्शंस.सी)।
  3. निर्यात और आयात प्रबंधित करें:

    • का उपयोग करें हेडर फ़ाइल में निर्यात (या आयात) के लिए फ़ंक्शन को चिह्नित करने के लिए FUNCTIONS_EXPORT_API मैक्रो।
    • फ़ंक्शन का उपयोग करने वाले प्रोजेक्ट में हेडर शामिल करते समय, FUNCTIONS_EXPORT_API को परिभाषित न करें (या मैक्रो को इसके आयात मूल्य के साथ परिभाषित करें)। &&&]
    • फ़ंक्शंस को निर्यात करने वाले प्रोजेक्ट में शामिल करने से पहले FUNCTIONS_EXPORT मैक्रो परिभाषित (स्वचालित या मैन्युअल रूप से) है हेडर.
उदाहरण कोड

functions.h

#pragma once

#define FUNCTIONS_EXPORT_API

#if defined(__cplusplus)
extern "C" {
#endif

FUNCTIONS_EXPORT_API char *dtoa(double, int, int, int*, int*, char**);
FUNCTIONS_EXPORT_API char *g_fmt(char*, double);
FUNCTIONS_EXPORT_API void freedtoa(char*);

#if defined(__cplusplus)
}
#endif

functions.c

#define FUNCTIONS_EXPORTS
#include "functions.h"

char *dtoa(double, int, int, int*, int*, char**)
{
    // Function implementation
}

char *g_fmt(char*, double)
{
    // Function implementation
}

void freedtoa(char*)
{
    // Function implementation
}
के तहत परियोजना संपत्तियों में मैक्रो नामों को सत्यापित करें प्रीप्रोसेसर परिभाषाएँ। &&&][एक्सेल वीबीए, डीएलएल से डीएलएल एंट्री प्वाइंट नहीं मिल सका फ़ाइल](https://stackoverflow.com/a/7214325/1128974)

[लाइब्रेरी में fstream का उपयोग करते समय मुझे निष्पादन योग्य में लिंकर त्रुटियां मिलती हैं](https://stackoverflow.com/a/10068252 /1128974)
  • [सी डीएलएल निर्यात अपरिभाषित](https://stackoverflow.com/a/7709927/1128974)
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3