Ah woo thanks that solves it.

--Phil

On 18 December 2013 15:46, Léo Testard <[email protected]> wrote:
> Hello Philip,
>
>
> Le 18 déc. 2013 à 16:41, Philip Herron <[email protected]> a écrit :
>
>> Hey all
>>
>> Been writing more rust to learn more. And i have been attempting to
>> write python bindings to rust. And for example
>>
>> if i create a function in rust:
>>
>> pub fn spam () {
>>  ...
>> }
>>
>> the symbol gets mangled to:
>>
>> redbrain@pherron-mtfdev-vbox {~/workspace/python-rs} $ nm -s spam.o
>> 0000000000000000 t _ZN4spam19h46502db08befd726ah4v0.0E
>>
>> Looks almost similar to the C++ abi at least the _ZN stuff does. Is
>> there any way to make a function be compiled to a C abi.
>
> There is a way to at least disable the name mangling, using the #[no_mangle] 
> attribute:
>
> #[no_mangle]
> fn foo() {
> ...
> }
>
> The symbol name in the binary will be what you expect.
>
>
>>
>> I know when we do soemthing like:
>>
>> extern {
>>  fn Py_Initialize ();
>> }
>>
>> Calling into the Python api it knows to use the C ABI. Is there anyway
>> to make a normal rust function to use the C ABI as i want to write a
>> rust module which can be loaded by python just to see if i can more
>> than anything.
>
> I believe there is also the following syntax:
>
> extern "C" fn foo() {
> }
>
> where C matches a specific ABI. according to Rustc, the available are : 
> [cdecl, stdcall, fastcall, aapcs, win64, Rust, C, system, rust-intrinsic]
>
>
> Leo
>
>>
>> As currently if i continue python won't be able to load it i dont
>> think at least anyways.
>>
>> --Phil
>
>
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to