मैं जंग पुस्तकालय के खिलाफ खिड़कियों पर एक साधारण सी lib साथ लिंक करने के लिए कोशिश कर रहा हूँ के साथ संकलित एक स्थिर lib से लिंक करनाMSVC
मेरे lib ज है
extern "C" {
void say_hello(const char* s);
}
सीपीपी
#include <stdio.h>
void say_hello(const char* s) {
printf("hello world");
}
मेरे जंग फ़ाइल
#[link(name="CDbax", kind="static")]
extern "C" {
fn say_hello(s: *const libc::c_char) ->() ;
}
Linki एनजी डेटा प्रतीकों
error: linking with `gcc` failed: exit code: 1
note: "gcc" "-Wl,--enable-long-section-names" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-Wl,--large-address-aware" "-shared-libgcc" "-L" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib" "e:\Rust\DBTools\DBAnalytics\target\debug\DBAnalytics.o" "-o" "e:\Rust\DBTools\DBAnalytics\target\debug\DBAnalytics.dll" "e:\Rust\DBTools\DBAnalytics\target\debug\DBAnalytics.metadata.o" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\libstd-11582ce5.rlib" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\libcollections-11582ce5.rlib" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\librustc_unicode-11582ce5.rlib" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\librand-11582ce5.rlib" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\liballoc-11582ce5.rlib" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\liblibc-11582ce5.rlib" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib\libcore-11582ce5.rlib" "-L" "e:\Rust\DBTools\DBAnalytics\target\debug" "-L" "e:\Rust\DBTools\DBAnalytics\target\debug\deps" "-L" "C:\Program Files (x86)\Rust 1.2\bin\rustlib\i686-pc-windows-gnu\lib" "-L" "e:\Rust\DBTools\DBAnalytics\.rust\bin\i686-pc-windows-gnu" "-L" "e:\Rust\DBTools\DBAnalytics\bin\i686-pc-windows-gnu" "-Wl,-Bstatic" "-Wl,--whole-archive" "-l" "CDbax" "-Wl,--no-whole-archive" "-Wl,-Bdynamic" "-l" "ws2_32" "-l" "userenv" "-l" "advapi32" "-shared" "-l" "compiler-rt"
note: Warning: corrupt .drectve at end of def file
Cannot export [email protected][email protected]@[email protected]: symbol not found
पुस्तकालय एक साधारण स्थिर lib के रूप में MSVC2013 पर निर्माण है में से एक के साथ एक त्रुटि देकर विफल रहता है। स्ट्रिंग "हैलो वर्ल्ड" डेटा सेक्शन में है, इसलिए मैं इसकी लिंक लिंक का कारण बनने की अपेक्षा नहीं करता। क्या विंडोज़ पर सी पुस्तकालयों को जोड़ने के बारे में मुझे कुछ विशिष्ट सेटिंग्स की जानकारी है?
बीटीडब्ल्यू यह 32 बिट एमएसवीसी lib है।
यदि आप जीसीसी के साथ डीएलएल बनाने की कोशिश करते हैं तो क्या होगा? –
जंग को कुछ दिन पहले एमएसवीसी समर्थन मिला, लेकिन मुझे नहीं लगता कि कोई एमएसवीसी-नाइटलीज है, और मुझे नहीं पता कि यह समर्थन कितना दूर है। आप '-/target' को कॉल करके अपने स्वयं के mvsc-rustc को '- targetarget x86_64-pc-windows-msvc' के साथ कॉल करने का प्रयास कर सकते हैं, हमें बताएं कि यह कैसा चल रहा है! संबंधित पीआर: https://github.com/rust-lang/rust/pull/25848 –