Сборка библиотеки pHash в Windows - PullRequest
1 голос
/ 01 апреля 2012

Я пытался собрать pHash (http://phash.org/) на моем компьютере с Windows, и мне не повезло. Я новичок в программировании настольных приложений. Я буду использовать библиотеку pHash с Python через ctypes. Можеткто-нибудь опубликовал шаги, связанные с созданием pHash?

Что я пробовал, открывал pHash.sln в Visual Studio 2008 и выбирал Release (в отличие от отладки) и собирал pHash. Я не был уверен, где он былЯ пытался посмотреть в папке проектов Visual Studio, но его там не было, поэтому я предположил, что он собирался в pHash / release / pHash.dll, но когда я загружал эту dll с помощью ctypes.cdllни одна из функций, перечисленных в документах pHash (http://phash.org/docs/howto.html), кажется, недоступна, например, ph_dct_imagehash (), ph_dct_videohash.

Вот пример моего кода:

import ctypes
import inspect

PHASHPATH = "C:\Users\me\Downloads\phash\release\pHash.dll"
phash_dll = ctypes.CDLL(PHASHPATH)
phash_dll['ph_dct_imagehash']

ОтветЯ получаю это:

Traceback (most recent call last):
  File "C:\Users\me\workspace\project\src\opencv.py", line 12, in <module>
    phash_dll['ph_dct_imagehash']
  File "C:\Program Files (x86)\Python27\lib\ctypes\__init__.py", line 371, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'ph_dct_imagehash' not found

Я новичок в этом, поэтому, пожалуйста, потерпите меня. Спасибо.

РЕДАКТИРОВАТЬ: я использую Python 2.7.

1 Ответ

3 голосов
/ 01 апреля 2012

За исключением некоторых функций directnt, функции pHash не экспортируются из pHash.dll.Это можно проверить с помощью DependencyWalker http://www.dependencywalker.com/. Попробуйте добавить __declspec(dllexport) перед объявлениями функций в pHash.h (например, для ph_dct_imagehash) и перекомпилировать.

...