[ctypes-users] in_dll string assignment question
Brought to you by:
theller
From: Ben S. <ben...@gm...> - 2010-05-19 17:02:32
|
I could use some help assigning to global C variable in DLL using ctypes. test.c contains the following #include <stdio.h> char name[60]; void test(void) { printf("Name is %s\n", name); } On windows (cygwin) I build a DLL (test.dll) as follows: gcc -g -c -Wall test.c gcc -Wall -mrtd -mno-cygwin -shared -W1,--add-stdcall-alias -o Test.dll test.o Then when trying to modify the `name` variable and then calling the C test function using the ctypes interface I get the following... >>> from ctypes import * >>> dll = windll.Test >>> dll <WinDLL 'Test', handle ... at ...> >>> f = c_char_p.in_dll(dll, 'name') >>> f c_char_p(None) >>> f.value = 'foo' >>> f c_char_p('foo') >>> dll.test() Name is Name is 4∞┘☺ 13 Why does the test function print garbage in this case? |