Простая программа на Python, не имеющая доступа к моей DLL - PullRequest
2 голосов
/ 12 сентября 2011

Я создал простой файл MFC .dll и могу получить к нему доступ через другую прикладную программу MFC. Я пытался сделать то же самое, используя Python 3.2.2, но после загрузки библиотеки он не обнаруживает функцию в моей dll и выдает ошибку вроде:

    Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python32\lib\ctypes\__init__.py", line 353, in __getattr__
    func = self.__getitem__(name)
  File "C:\Python32\lib\ctypes\__init__.py", line 358, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'SayHello' not found

..

Я пытаюсь найти простую программу для доступа к моему dll-файлу MFC с помощью Python, но пока не достигла успеха. Чтобы все знали, я прочитал ctypes и много искал, чтобы это сработало. Моя главная цель - использовать Python в качестве языка сценариев для взаимодействия с моей MFC C ++ dll. Я много читаю, и самый близкий, к которому я мог добраться, был с PythonWin. Пожалуйста, помогите в этом отношении.

Приветствия.

1 Ответ

0 голосов
/ 14 сентября 2011

Я смог справиться со своей проблемой и решил ее. Для тех, кто может ожидать этого в будущем, я просто хотел бы вставить код скрипта Python, чтобы сделать ваши функции доступными в ваших скриптах Python. Очевидно, что путь к функции C ++ заключается в том, чтобы объявить об этом в файле .dll.

extern "C" __declspec(dllexport) int SayHello(int strNo);

и ваш скрипт Python должен выглядеть примерно так: (функция getattr () требуется для доступа к вашей функции c ++ в вашем скрипте python)

mydll = cdll.LoadLibrary("Location.dll")
hellofunc = getattr(mydll,'SayHello')
func2.restype = c_int
func2.argtypes = [c_int]
x = func2(34)
print(x)

...

Если кто-то думает, что я могу ошибаться, пожалуйста, поправьте меня. Я новичок в Python, у меня это сработало, и после этого я могу продолжать писать сценарии. Надеюсь, что это помогает другим.

Приветствие.

...