2009-05-17 7 views
6

मैं सिगविन या मिनजीडब्ल्यू का उपयोग करने के ठीक हूं, लेकिन मुझे 32-बिट कोड के साथ 64-बिट कोड के साथ समाप्त करने की आवश्यकता है। ऐसा इसलिए है क्योंकि मैं डीएलएल को 64-बिट प्रबंधित सी # से कॉल करूँगा। 64-बिट बाइनरी बनाने के लिए उन उपकरणों को स्थापित करने के लिए मुझे लगता है और अच्छे संदर्भ नहीं दिख रहे हैं। साथ ही, यह अच्छा होगा अगर जीसीसी संस्करण 4 था, संस्करण 3 नहीं, जैसा कि मेरे सिगविन इंस्टॉलेशन के साथ आया था।64-बिट विंडोज के लिए मौजूदा पॉजिक्स कोड को कैसे संकलित करें?

एक विकल्प इंटरप्रोसेस संचार का कुछ रूप होगा। मैं उस पर शोध करूंगा, लेकिन जो मैंने ऊपर रखा है वह वही है जो मैं वास्तव में चाहता हूं।

+0

मुझे एक Ming64 विंडोज़ http://www.drangon.org/mingw/ पर बनाया गया था जो ऐसा लगता था कि यह काम करने वाला था। हेडर फाइलों के साथ कोई समस्या नहीं मिली, आदि। लेकिन फिर cc1plus.exe (g ++ द्वारा बुलाया गया) क्रैश हो गया। आह। – Fantius

उत्तर

6

64-bit MinGW, (अभी जारी) gcc-4.4.0 के आधार पर, शायद आपकी सबसे अच्छी शर्त है।

विस्तृत निर्देश (के बाद से sourceforge.net पर MinGW-W64 परियोजना यह mingw-w64.org उपयोग करना बेहतर है mingw-w64.org ओर बढ़ रहा है): कहीं cygwin के तहत
1. डाउनलोड archive
2. निकालें यह। मेरे मामले में, उच्च-स्तरीय cygwin निर्देशिका C:\cygwin है, मैं mingw निर्देशिका में पैकेज निकाले, और C:\cygwin\mingw में निम्नलिखित सामग्री के साथ समाप्त हो गया (जो cygwin के तहत /mingw के रूप में दिख रहा है:

$ ls -l /mingw 
total 1 
drwxr-xr-x+ 2 user None 0 May 10 08:32 bin 
drwxr-xr-x+ 2 user None 0 May 10 05:45 include 
drwxr-xr-x+ 2 user None 0 May 10 08:30 info 
drwxr-xr-x+ 3 user None 0 May 10 08:30 lib 
drwxr-xr-x+ 3 user None 0 May 10 05:45 libexec 
drwxr-xr-x+ 4 user None 0 May 10 05:45 man 
lrwxrwxrwx 1 user None 17 May 17 17:20 mingw -> x86_64-pc-mingw32 
drwxr-xr-x+ 3 user None 0 May 10 04:16 share 
drwxr-xr-x+ 5 user None 0 May 10 04:18 x86_64-pc-mingw32 

3. अब कुछ संकलन । सी ++ कोड मैं प्रयोग किया है:

// t.cc 
#include <vector> 
#include <string> 

using namespace std; 
int main() 
{ 
    vector<string> vs; 
    vs.push_back("abc"); 
} 

और यह इस तरह संकलन: अंत में

$ /mingw/bin/x86_64-pc-mingw32-g++ t.cc 

4., Verif

Microsoft (R) COFF/PE Dumper Version 7.00.9466 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file a.exe 

PE signature found 

File Type: EXECUTABLE IMAGE 

FILE HEADER VALUES 
      8664 machine (AMD64) 
       10 number of sections 
     4A10AF9F time date stamp Sun May 17 17:45:19 2009 
      ABA00 file pointer to symbol table 
      EC4 number of symbols 
       F0 size of optional header 
       27 characteristics 
        Relocations stripped 
        Executable 
        Line numbers stripped 
        Application can handle large (>2GB) addresses 
+0

वे लिनक्स पैकेज हैं, है ना? मैं विंडोज़ बनाना और चलाने के लिए चाहता हूं। – Fantius

+0

आह, मैंने आपके द्वारा पोस्ट किए गए लिंक पर स्वचालित बिल्ड फ़ोल्डर के तहत एक विंडोज़ बिल्ड को देखा है। मुझे लगता है कि मुझे वही होगा जो मुझे चाहिए। – Fantius

+0

मुझे यह काम करने में परेशानी हो रही है। जब मैंने पहले MinGW32 स्थापित किया था, तो मैंने इंस्टॉलर का उपयोग किया था। यह एक इंस्टॉलर नहीं है।मैंने अपने पथ में बिन फ़ोल्डर जोड़ा है और यह g ++ पा सकता है, लेकिन g ++ को पता नहीं है कि शीर्षलेख और पुस्तकालयों को कहां देखना है। जब मैंने इंस्टॉलर का इस्तेमाल किया, तो सब कुछ अभी काम किया। – Fantius

0

gcc docs कहते हैं:: y परिणाम एक Windows/x 64 निष्पादन, dumpbin /headers a.exe चलाकर है

ये `मी 'स्विच एएमडी 86- पर उपरोक्त के अलावा समर्थन कर रहे 64-बिट वातावरण में 64 प्रोसेसर।

-m32 -m64 32-बिट या 64-बिट वातावरण के लिए कोड जेनरेट करें। 32-बिट पर्यावरण int, long और सूचक 32 बिट्स पर सेट करता है और किसी भी i386 सिस्टम पर रन बनाता है जो कोड उत्पन्न करता है। 64-बिट पर्यावरण 32 बिट्स और लंबा और 64 बिट्स और पर पॉइंटर को एएमडी के x86-64 आर्किटेक्चर के लिए कोड जेनरेट करता है।

ध्यान दें कि कि तुम पागल ड्राइव करने के लिए जा रहा है, मुझे लगता है कि, अगर MinGW वास्तव में यह, कि जिस तरह से करता है के बाद से सामान्य रूप से Windows 64 लंबे पर 32 बिट है और लंबे समय में लंबे समय के 64-बिट सूचक आकार प्रकार है।

+1

मैंने कोशिश की कि सिग्विन और मिनजीडब्ल्यू में और दोनों ने शिकायत की है कि 64-बिट मोड संकलित नहीं किया गया है। यह बहुत कुछ है जो मुझे होने की उम्मीद है क्योंकि मेरे पास इनमें से किसी भी चीज का 64-बिट संस्करण नहीं है। यही वह है जिसे मैं ढूंढने की कोशिश कर रहा हूं। – Fantius

+1

mingw gcc --target = x86_64-pc-mingw32 के साथ कॉन्फ़िगर किया गया आकार के साथ कोड बनाता है (लंबा) == 4 और आकार (लंबा लंबा) == 8 –

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