हे सब लोग, मैं एक बहु फ़ाइल प्रोजेक्ट को SWIG करने की कोशिश कर रहा हूं जिसे मैंने VS2010 (C++) में पायथन में बनाया है। मैंने Python26.lib फ़ाइल को लिंक करने में कामयाब रहा है, और मेरे मुख्य .cpp फ़ाइल के लिए एक wrapper .cpp फ़ाइल उत्पन्न करने वाला SWIG है। मैंने एक्सटेंशन के साथ .dll बनाने के लिए अपना कोड सेट किया है .pyd।वीएस -2010 में SWIG कैसे करें?
यह मैं फ़ाइल है मैं वर्तमान में है:
%module HiveGPS
%{
#include "ou_thread.h"
#include "HiveGPS.h"
%}
%include ou_thread.h
%include HiveGPS.h
और मैं एक .py और .pyc फ़ाइल पाने के लिए mangaed गए हैं। अब, मेरी .py फ़ाइल चलाने के लिए मेरी समझ से, मुझे इसे अपनी .pyd फ़ाइल से लिंक करने की आवश्यकता है, लेकिन जब मैं ऊपर सूचीबद्ध सेटिंग्स के साथ अपनी परियोजना बनाने के लिए VS2010 का उपयोग करने का प्रयास करता हूं, तो यह एक थ्रेड क्लास I के बारे में शिकायत करता है। 'का उपयोग कर रहा हूँ:
1>------ Build started: Project: HiveGPS, Configuration: Release Win32 ------
1>Build started 5/11/2011 1:41:30 PM.
1>InitializeBuildStatus:
1> Touching "Release\HiveGPS.unsuccessfulbuild".
1>ClCompile:
1> HiveGPS_wrap.cpp
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(57): error C2146: syntax error : missing ';' before identifier 'm_strName'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(57): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(57): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(64): error C2146: syntax error : missing ';' before identifier 'getName'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(64): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(64): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(64): warning C4183: 'getName': missing return type; assumed to be a member function returning 'int'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(98): error C2146: syntax error : missing ';' before identifier 'm_strName'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(98): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(98): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(104): error C2146: syntax error : missing ';' before identifier 'getName'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(104): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(104): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(104): warning C4183: 'getName': missing return type; assumed to be a member function returning 'int'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(115): error C2146: syntax error : missing ';' before identifier 'msg'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(118): error C2146: syntax error : missing ';' before identifier 'getMessage'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(118): warning C4183: 'getMessage': missing return type; assumed to be a member function returning 'int'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(51): error C2011: 'openutils::Thread' : 'class' type redefinition
1> c:\users\*\desktop\hivegps\hivegps\ou_thread.h(51) : see declaration of 'openutils::Thread'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(93): error C2011: 'openutils::Mutex' : 'class' type redefinition
1> c:\users\*\desktop\hivegps\hivegps\ou_thread.h(93) : see declaration of 'openutils::Mutex'
1>c:\users\*\desktop\hivegps\hivegps\ou_thread.h(113): error C2011: 'openutils::ThreadException' : 'class' type redefinition
1> c:\users\*\desktop\hivegps\hivegps\ou_thread.h(113) : see declaration of 'openutils::ThreadException'
1>c:\users\*\desktop\hivegps\hivegps\HiveGPS.h(29): error C2504: 'openutils::Thread' : base class undefined
1>c:\users\*\desktop\hivegps\hivegps\HiveGPS.h(53): error C2079: 'HiveGPS::readWriteMutex' uses undefined class 'openutils::Mutex'
1>HiveGPS_wrap.cpp(3086): error C2027: use of undefined type 'openutils::Thread'
1> c:\users\*\desktop\hivegps\hivegps\ou_thread.h(51) : see declaration of 'openutils::Thread'
1>HiveGPS_wrap.cpp(3086): fatal error C1903: unable to recover from previous error(s); stopping compilation
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:02.10
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
इन त्रुटियों (ऋण पिछले एक) के सभी मूल रूप से कह रहे हैं कि स्ट्रिंग वर्ग किसी भी तरह से लागू किया जाता है, यह स्ट्रिंग वर्ग के अजगर की परिभाषा के साथ परस्पर विरोधी है? अंतिम त्रुटि थ्रेड क्लास के बारे में शिकायत कर रही है, क्या यह वही समस्या हो सकती है?
उन सभी ने कहा: क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं, या बेहतर अभी तक, मुझे वीएस -2010 (एसडब्ल्यूआईजी साइट 2008 के लिए) के लिए ऐसा करने के बारे में एक ट्यूटोरियल पर इंगित करें।
और यदि ऐसा नहीं किया जा सकता है, तो क्या मैं .dll फ़ाइल को किसी भी तरह से .dll फ़ाइल से जेनरेट कर सकता हूं?
लंबे स्पष्टीकरण के लिए खेद है, लेकिन मैं इस पर थोड़ी देर से खो गया हूं इसलिए मैंने सब कुछ समझाने का फैसला किया।
यह कुछ भी हो सकता है। एसडब्ल्यूआईजी काफी हद तक समर्थन करता है, लेकिन कुछ संरचनाओं के साथ मदद की ज़रूरत है। हेडर फाइलों को देखे बिना या आप जेनरेट किए गए एसडब्ल्यूआईजी रैपर को कैसे संकलित कर रहे हैं, यह निर्धारित करना मुश्किल है कि क्या गलत है। –
यदि स्ट्रिंग का उपयोग स्ट्रिंग :: स्ट्रिंग है, तो http://www.swig.org/Doc1.3/Library.html – Torleif