2013-05-20 3 views
1

학교 프로젝트의 경우 aubio 라이브러리를 사용해야합니다. 그러나 Windows 용으로 컴파일하는 데 문제가 있습니다.ImportError : DLL로드 실패 : 메모리 위치에 대한 액세스가 잘못되었습니다. Python에서 aubio 사용하기

그의 자식 (0.4.0 알파)에서 최신 소스를 다운로드했습니다. 그런 다음 Cygwin을 사용하여 --with-target-platform = win32를 사용하여 Windows 용으로 크로스 컴파일합니다. 웨이를 사용합니다. 오류없이 작동합니다.

다음 단계는 컴파일 된 파일 (libaubio.dll.a)을 MinGW 라이브러리 폴더로 복사하는 것입니다. 그런 다음 모듈에 대한 Python 래퍼를 컴파일하려고하지만 ld.exe가 -laubio 오류를 찾을 수 없다는 것을 보여줍니다. libaubio.dll.a의 이름을 libaubio.a로 변경하면이 문제가 해결되고 컴파일이 성공적으로 완료됩니다.

Python 폴더에 설치하면 완벽하게 작동합니다. 그러나 여기에 문제가 시작됩니다. aubio를 가져올 때이 오류가 발생합니다 : ImportError : DLL로드 실패 : 메모리 위치에 대한 액세스가 잘못되었습니다.

이 문제를 해결하는 방법에 대한 실마리가 없습니다. 아무도 도와 줄 수 있니? 아니면 그 오류를 설명해 주시겠습니까? 미리 감사드립니다.

젠더

ps. 그것은 OSX와 우분투에서 완벽하게 컴파일됩니다.

답변

0

글쎄,이게 당신에게 맞는 해결책이 아닐지 모르지만, 힌트 일뿐입니다. ImportError: DLL load failed: Invalid access to memory location. C에서 프로그래밍 된 Python 확장 프로그램을 만들 때 동일한 오류가 발생했습니다. 플랫폼 : Windows 32 비트.

이 오류는 모든 Python 환경 (Spyder, Notebook, 일반 콘솔 ...)에서 비대화 형 모드뿐만 아니라 대화 형 모드에서도 무작위로 나타 났기 때문에 정말 고통 스러웠습니다. MinGW와 파이썬의 distutils (명령어 python setup.py install)를 사용하여 코드를 컴파일했습니다. 컴파일시 경고 또는 오류가 표시되지 않고 pyd 파일이 올바른 디렉토리에 생성되었습니다. 그러나이 모듈을 가져올 때 import example pro 파이썬 코드를 불규칙하게 충돌 (일반적으로 모듈 가져 오기 시도 중 5 번 중 하나만 성공)했습니다.

이상한 점은 다른 컴퓨터에서 잘 작동했기 때문입니다. 음, 마침내 해결 방법을 찾았습니다 - MinGW의 최신 버전을 다운로드하고 (Qt SDK 배포판에 포함 된 버전을 사용하기 전에) 모듈을 컴파일했습니다 다시. 그런 다음 더 이상 충돌이 발생하지 않았습니다. 그러나 체계적인 해결책이나 설명을 찾지 못했습니다. 그래서 나는 pyd 파일을 생성하는 데 사용 된 컴파일러와 관련이있을 수있다. (아마도 DLL이 없다. 정확히 모르겠다.)