Я пытаюсь выучить Python и столкнулся со странным поведением.Я экспериментирую с ctypes и самодельной (очень простой) DLL.
Это скрипт Python, который я пытаюсь запустить:
from ctypes import *
myLib = CDLL("libDlltest")
myLib.hello()
myLib.goodbye()
print 'I am a line'
myLib.goodbye()
Я настроил затмение в соответствии со сборкойбиблиотека в соответствии с этим руководством, и когда она не работала, я собрал ее в cygwin с помощью gcc.
hello () и goodbye () реализованы как
EXPORT void hello(void) {
printf ("Hello\n");
}
EXPORT void goodbye(void) {
puts ("Goodbye");
}
(где EXPORT - макрос, о котором вы можете прочитать подробнее в руководстве выше)
Тем не менее,это начинает становиться странным, когда вывод, который я получаю из программы:
I am a line
Hello
Goodbye
Goodbye
Если вы не заметили, распечатки не в правильном порядке.Текст, напечатанный из библиотечных функций, появляется после или непосредственно перед завершением выполнения программы, а текст, напечатанный с помощью python 'print', появляется первым, несмотря на то, что его называют вторым.
Я не могу представить, что это было предназначеноповедение.Я, наверное, в любом случае здесь делаю что-то не так, поэтому:
- Что я могу сделать не так?
- Есть ли способ объяснить это поведение?