Я уже разместил этот вопрос на сайте авторов , но я подумал, что могу спросить и здесь.
Я пытался установить pylzma с этой настройкой:
- Windows 7 x64
- Python 2.6.6 x64
- компилятор amd64, приходящий с Windows Server 2003 SDK
- клонировал git-репозиторий git: //github.com/fancycode/pylzma.git
С простым easy_install pylzma
я получил это:
кл: предупреждение командной строки D9025:
переопределение '/ MD' с помощью '/ MT' pylzma.c
src / pylzma / pylzma.c (85): предупреждение
C4244: '=': преобразование из
'Py_ssize_t' до 'int', возможная потеря
данных
src / pylzma / pylzma.c (102): ошибка
C2275: «CSha256»: незаконное использование этого
введите как выражение
C: \ Users \ xavier.lapointe \ AppData \ Local \ Temp \ easy_install-2mfkqu \ pylzma-0.4.3 \ SRC \ pylzma ../ 7zip / С / Sha256.h (18)
: см. декларацию «CSha256»
src / pylzma / pylzma.c (102): ошибка
C2146: синтаксическая ошибка: отсутствует ';'
перед идентификатором 'ша'
src / pylzma / pylzma.c (102): ошибка
C2065: 'sha': необъявленный идентификатор
src / pylzma / pylzma.c (103): ошибка
C2065: 'sha': необъявленный идентификатор
src / pylzma / pylzma.c (103): предупреждение
C4133: «функция»: несовместимые типы
- от 'int *' до 'CSha256 *'
src / pylzma / pylzma.c (104): ошибка
C2143: синтаксическая ошибка: отсутствует ';'
перед «типом»
src / pylzma / pylzma.c (105): ошибка
C2143: синтаксическая ошибка: отсутствует ';'
перед «типом»
src / pylzma / pylzma.c (106): ошибка
C2143: синтаксическая ошибка: отсутствует ';'
перед «типом»
src / pylzma / pylzma.c (107): ошибка
C2143: синтаксическая ошибка: отсутствует ';'
перед «типом»
src / pylzma / pylzma.c (108): ошибка
C2065: «раунд»: необъявленный идентификатор
src / pylzma / pylzma.c (108): ошибка
C2065: «раунд»: необъявленный идентификатор
src / pylzma / pylzma.c (108): ошибка
C2065: «раунды»: не объявлено
Идентификатор
src / pylzma / pylzma.c (108): ошибка
C2065: «раунд»: необъявленный идентификатор
src / pylzma / pylzma.c (109): ошибка
C2065: 'sha': необъявленный идентификатор
src / pylzma / pylzma.c (109): предупреждение
C4133: «функция»: несовместимые типы
- от 'int *' до 'CSha256 *'
src / pylzma / pylzma.c (110): ошибка
C2065: 'sha': необъявленный идентификатор
src / pylzma / pylzma.c (110): предупреждение
C4133: «функция»: несовместимые типы
- от 'int *' до 'CSha256 *'
src / pylzma / pylzma.c (111): ошибка
C2065: 'sha': необъявленный идентификатор
src / pylzma / pylzma.c (111): предупреждение
C4133: «функция»: несовместимые типы
- от 'int *' до 'CSha256 *'
src / pylzma / pylzma.c (111): ошибка
C2065: 'temp': необъявленный идентификатор
src / pylzma / pylzma.c (112): ошибка
C2065: 'i': необъявленный идентификатор
src / pylzma / pylzma.c (112): ошибка
C2065: 'i': необъявленный идентификатор
src / pylzma / pylzma.c (112): ошибка
C2065: 'i': необъявленный идентификатор
src / pylzma / pylzma.c (113): ошибка
C2065: 'temp': необъявленный идентификатор
src / pylzma / pylzma.c (113): ошибка
C2065: 'i': необъявленный идентификатор
src / pylzma / pylzma.c (113): ошибка
C2109: индекс требует массив или
тип указателя
src / pylzma / pylzma.c (116): ошибка
C2065: 'sha': необъявленный идентификатор
src / pylzma / pylzma.c (116): предупреждение
C4133: «функция»: несовместимые типы
- от 'int *' до 'CSha256 *'
ошибка: скрипт установки завершился с ошибкой:
команда '"C: \ Program Files
(x86) \ Microsoft Visual Studio
Ошибка 9.0 \ VC \ BIN \ amd64 \ cl.exe "'с состоянием выхода 2
Затем после поиска в Google я подумал, что речь идет о компиляторе (c90 против c99), некоторые люди предложили изменить расширение .c на .cpp. Поэтому я сделал это и соответственно изменил setup.py (в основном имя файла).
Тогда успех, он компилируется после нескольких настроек в CpuArch.c (pp) и другого файла с синтаксическими ошибками.
Теперь дело в дросселе компоновщика:
C: \ Program Files (x86) \ Microsoft
Visual Studio
9.0 \ VC \ BIN \ amd64 \ link.exe / DLL / nologo / НЕПРАВИЛЬНО: НЕТ
/LIBPATH:C:\dev\pylzma\build\temp.win-amd64-2.6\Release\src\pylzma
/ LibPath: C: \ Python26 \ ЛИЭС
/ LIBPATH: C: \ Python26 \ PCbuild \ amd64
user32.lib oleaut32.lib
/ ЭКСПОРТ: initpylzma
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma_decompressobj.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma_compressfile.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma_decompress.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma_compress.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma_streams.obj
build \ temp.win-amd64-2.6 \ Release \ src / pylzma / pylzma_aes.obj build \ temp.win-amd64-2.6 \ Release \ src / pylzma / pylzma_decompress_compat.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma / pylzma_decompressobj_compat.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC \ SDK \ LzFind.obj
build \ temp.win-amd64-2.6 \ Release \ src \ sdk \ LzmaDec.obj build \ temp.win-amd64-2.6 \ Release \ src \ sdk \ LzmaEnc.obj build \ temp.win-amd64-2.6 \ Release \ ЦСИ \ 7zip \ C \ CpuArch.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC \ 7zip \ C \ Aes.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC \ 7zip \ C \ AesOpt.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC \ 7zip \ C \ Sha256.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC \ Compat \ LzmaCompatDecode.obj
построить \ temp.win-amd64-2.6 \ Release \ SRC / SDK / LzFindMt.obj
build \ temp.win-amd64-2.6 \ Release \ src / sdk / Threads.obj /OUT:build\lib.win-amd64-2.6\pylzma.pyd
/IMPLIB:build\temp.win-amd64-2.6\Release\src/pylzma\pylzma.lib
/MANIFESTFILE:build\temp.win-amd64-2.6\Release\src/pylzma\pylzma.pyd.manifest
pylzma.obj: предупреждение LNK4197: экспорт
'initpylzma' указан несколько раз;
используя первую спецификацию
библиотека
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma \ pylzma.lib
и объект
построить \ temp.win-amd64-2.6 \ Release \ SRC / pylzma \ pylzma.exp
pylzma.obj: ошибка LNK2001: не устранена
внешний символ "char const * const
doc_decompress»
(? Doc_decompress @@ 3QBDB)
pylzma.obj: ошибка LNK2001: не устранена
внешний символ "struct _object *
__cdecl pylzma_decompress (struct _object *, struct _object *) "(? pylzma_decompress @@ YAPEAU_object @@ PEAU1 @ 0 @ Z) * 1095 *
pylzma.obj: ошибка LNK2001: не устранена
внешний символ "char const * const
doc_compress "(? doc_compress @@ 3QBDB)
Aes.obj: ошибка LNK2019: не устранена
внешний символ "void __cdecl"
AesCtr_Code_Intel (без знака int
*, без знака char *, без знака __int64) "(? AesCtr_Code_Intel @@ YAXPEAIPEAE_K @ Z)
ссылка в функции AesGenTables
Aes.obj: ошибка LNK2019: не устранена
внешний символ "void __cdecl"
AesCbc_Decode_Intel (без знака int
*, без знака char *, без знака __int64) "(? AesCbc_Decode_Intel @@ YAXPEAIPEAE_K @ Z)
ссылка в функции AesGenTables
Aes.obj: ошибка LNK2019: не устранена
внешний символ "void __cdecl"
AesCbc_Encode_Intel (без знака int
*, без знака char *, без знака __int64) "(? AesCbc_Encode_Intel @@ YAXPEAIPEAE_K @ Z)
ссылка в функции AesGenTables
AesOpt.obj: ошибка LNK2019: не устранена
внешний символ _mm_aesenclast_si128
упоминается в функции "void __cdecl"
AesCbc_Encode_Intel (union __m128i
*, union __m128i *, unsigned __int64) "(? AesCbc_Encode_Intel @@ YAXPEAT__m128i @@ 0_K @ Z) * 1105 *
AesOpt.obj: ошибка LNK2019: не устранена
внешний символ _mm_aesenc_si128
упоминается в функции "void __cdecl"
AesCbc_Encode_Intel (union __m128i*, union __m128i *, unsigned __int64) "(? AesCbc_Encode_Intel @@ YAXPEAT__m128i @@ 0_K @ Z) * 1107 *
AesOpt.obj: ошибка LNK2019: неразрешенный внешний символ _mm_aesdeclast_ced_code_si128, union __m128i *, unsigned __int64) "(? AesCbc_Decode_Intel @@ YAXPEAT__m128i @@ 0_K @ Z) * 1109 *
AesOpt.obj: ошибка LNK2019: неразрешенный внешний символ _mm_aesdec_si128 oid __ tel i tel refe refe refe refeunion __m128i *, unsigned __int64) "(? AesCbc_Decode_Intel @@ YAXPEAT__m128i @@ 0_K @ Z) build \ lib.win-amd64-2.6 \ pylzma.pyd: фатальная ошибка LNK1120: 10 неразрешенных внешних ошибок
* 1112Сбой "C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ BIN \ amd64 \ link.exe" с состоянием выхода 1120
Теперь мне трудно пытатьсявыяснить, что это за проблемы с компоновщиком, даже с документом msdn (об ошибке компоновщика). Вероятно, из-за моего недостатка знаний о C / C ++.
Так что в основном мой вопрос(ы):
- Есть ли способ исправить эти проблемы с компоновщиком?
- Неправильно ли я переименовал эти файлы из .c в .cpp.Если да, возможно ли скомпилировать его как .c с помощью компилятора msvc amd64?
EDIT У меня нет большого ответа, поэтому я думаю, что добавлю несколько вопросов:
Какой у вас подход к ошибке компоновщика?
Есть ли какая-то логика, которой я могу следовать, чтобы помочь себе найти ответы в Интернете (в сочетании с этим MSDN ошибки компоновщика )?
Так как я видел, как многие люди успешно компилировали его для 32-битной системы, возможно ли, что он хорошо компилируется в 64-битной системе, но терпит неудачу, когда речь идет о компоновке из-за типа архитектуры?
Мне нужны подсказки, которые могут помочь, а не полностью рабочий ответ.
Большое спасибо за вашу помощь (: