2012-09-20 16 views
10

के साथ डीबगिंग करते समय डीएलएल निर्भरता नहीं मिली मेरी परियोजना एक स्टैंडअलोन सी ++ एप्लिकेशन है जो ध्वनि चलाने के लिए एफएमओडी का उपयोग करता है। मैंने पहले बिना किसी समस्या के विजुअल स्टूडियो 2010 के साथ एक ही प्रोजेक्ट विकसित किया है, लेकिन 2012 मुझे क्लासिक त्रुटि देता है: "प्रोग्राम शुरू नहीं हो सकता है क्योंकि fmodex.dll आपके कंप्यूटर से गायब है। इस समस्या को ठीक करने के लिए प्रोग्राम को पुनर्स्थापित करने का प्रयास करें। " प्रोजेक्ट अन्य डीएलएल लोड करता है (जैसे डायरेक्ट 3 डी संबंधित फाइलें और डी 3 डी शेडर कंपाइलर) बस ठीक है।विजुअल स्टूडियो 11 आरसी

समस्या तब होती है जब आईडीई से प्रोग्राम को डीबग या चलाने का प्रयास किया जाता है, न कि अगर मैं निष्पादन योग्य को DLL के साथ उचित निर्देशिका में कॉपी करता हूं और इसे मैन्युअल रूप से चलाता हूं। यदि मैं प्रोग्राम से एफएमओडी के सभी संदर्भों को हटा देता हूं, तो डिबगिंग और चलाना ठीक काम करता है। मैंने यह सुनिश्चित कर लिया है कि मेरे पास प्रोजेक्ट सेटिंग्स में सही कार्यशील निर्देशिका है (इसके अलावा यह सभी अन्य फ़ाइलों को उसी निर्देशिका में ठीक करता है)। मैंने मूल रूप से विजुअल स्टूडियो 2010 से परियोजना को रूपांतरित कर दिया, लेकिन बिना किसी किस्मत के स्क्रैच से एक नई परियोजना बनाने की कोशिश की। मैंने सभी संभावित कंपाइलर और लिंकर सेटिंग्स को भी tinkered किया है, और googling या तो मदद करने के लिए प्रतीत नहीं होता है।

मुझे लगता है कि समस्या के नए मेट्रो स्टाइल ऐप्स के साथ कुछ करना है और बाहरी निर्भरताओं को संभालने का यह तरीका है, लेकिन मैंने "मेट्रो स्टाइल ऐप सपोर्ट" भी बंद कर दिया है। मुझे लगता है कि मैंने वास्तव में सब कुछ करने की कोशिश की है और मुझे पता नहीं है कि आगे क्या प्रयास करना है। अधिक नैदानिक ​​जानकारी प्राप्त करने के लिए निर्देशों की भी सराहना की जाएगी! धन्यवाद!

संपादित करें: दृश्य स्टूडियो संस्करण मैं उपयोग कर रहा हूँ दृश्य स्टूडियो Ultimate 2012 आर सी, संस्करण 11.0.50706.0 QRELRC जुलाई, 2012

+0

DLL समस्याओं के साथ हमेशा की तरह, _have आप निर्भरता की कोशिश की Walker_? विशेष रूप से, प्रोफाइलिंग मोड? – MSalters

उत्तर

16

जाओ परियोजना के गुणों के लिए:

Configuration Properties | Debugging | Environment 

और निम्न आइटम जोड़ें:

PATH=c:\path\where\the\dll-is;$(Path) 
+0

ऐसा लगता है यह हो सकता है! जब मैं काम से घर वापस आऊंगा तो कोशिश करनी होगी! – hhatinen

+0

बढ़िया! इस मुद्दे को नकार दिया। धन्यवाद! – hhatinen

+0

यह आपको प्रोग्राम को डीबगर में चलाने देगा, लेकिन यह समस्या को ठीक नहीं करता है कि प्रोग्राम अपने डीएलएल को सही तरीके से नहीं ढूंढ रहा है। यानी यदि कोई और प्रोग्राम वर्तमान निर्देशिका के साथ कहीं और प्रोग्राम चलाता है, तो यह उनके लिए भी असफल हो जाएगा। (यही कारण है कि आम अगर आप उदाहरण के लिए एक कमांड प्रॉम्प्ट के माध्यम से कार्यक्रम चलाने के लिए, है।) –

0

ऐसा नहीं है कि वी.एस. जब के लिए एक अलग वर्तमान निर्देशिका के साथ एप्लिकेशन चल रहा है हो सकता है आप हाथ से ऐप चलाते हैं।

वीएस आमतौर पर प्रोजेक्ट फ़ोल्डर में वर्तमान निर्देशिका सेट करता है, जो आम तौर पर उस फ़ोल्डर के समान नहीं होता है जहां निर्मित बाइनरी हैं। जब आप इसे हाथ से चलाते हैं तो आप शायद बाद वाले से इसे चला रहे हैं, पूर्व में नहीं।

यदि यह समस्या है तो fmodex.dll लोड करने वाला कोड डीएलएल खोज पथ में होने वाले वर्तमान डीआईआर के आधार पर होना चाहिए, जो एक बड़ा सुरक्षा जोखिम (लुकअप "डीएलएल रोपण" या डीएलएल "प्री-लोडिंग") और जो कुछ विंडोज कॉन्फ़िगरेशन द्वारा सक्रिय रूप से अवरुद्ध है।

+0

वर्तमान निर्देशिका ठीक होनी चाहिए (यदि आपके द्वारा प्रोजेक्ट सेटिंग्स में कार्यशील निर्देशिका का मतलब है)। लेकिन आप वहां सही हो सकते हैं, कि डीबगर वर्तमान निर्देशिका से डीएलएल को लोड करने के लिए प्रोग्राम को सक्रिय रूप से रोक रहा है। मैं अपने स्थानीय सिस्टम 32 फ़ोल्डर में fmodex.dll की प्रतिलिपि बनाने की तुलना में कुछ भी कोशिश करने के लिए चला गया, और कार्यक्रम ठीक शुरू करना प्रतीत होता था। – hhatinen

2

मेरी सहानुभूति, मैं डीएलएल नरक में रहता हूं हाल ही में ऐसा लगता है। दो सुझाव:

  1. आप जो एक /useenv स्विच है devenv साथ कमांड लाइन से आईडीई ड्राइव कर सकते हैं।

    "... Use PATH, INCLUDE, LIBPATH, and LIB environment variables instead of IDE paths for VC++ builds.

  2. dumpbin /dependents [*.exe] [*.dll] आप DLL निर्भरता दिखाई देगा।

    dumpbin /dependents openssl.exe

Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file openssl.exe

File Type: EXECUTABLE IMAGE

Image has the following dependencies:

SSLEAY32.dll 
LIBEAY32.dll 
WSOCK32.dll 
MSVCR80.dll 
KERNEL32.dll 

Summary 

    4000 .data 
    14000 .rdata 
    1000 .rsrc 
    33000 .text 
+0

/useenv स्विच प्रतीत होता है कि वीएस परियोजना को खोलने में विफल रहता है। यह प्रत्येक प्रोजेक्ट के लिए निम्न त्रुटि का आउटपुट करता है: 'एफ: \ प्रोग्राम फ़ाइलें \ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Common.props (63,3): आयातित प्रोजेक्ट "जी: \ बिल्ड \ कॉमन कॉन्फ़िगरेशन \ Neutral \ sdk.props "नहीं मिला था। पुष्टि करें कि घोषणा में पथ सही है, और फ़ाइल disk.' पर मौजूद है कि (एफ डिस्क जहां दृश्य स्टूडियो है और जी जहां परियोजना है, वहाँ कोई जी है: \ निर्देशिका बनाने में हालांकि ..)। – hhatinen