Сборка модуля Perl / C с использованием Microsoft VC (cl.exe) 2010 (10.0) Express и ActivePerl 5.12.4 / 32 - PullRequest
4 голосов
/ 19 июля 2011

Я столкнулся с этой проблемой сборки, используя конфигурацию, упомянутую в заголовке. Модуль Perl, который я пытаюсь построить, это MongoDB::Connection. Я строю через оболочку CPAN, или вручную, как это:

C:\Opt\Perl512.32\bin\perl.exe Makefile.PL
nmake

Командная строка для cl.exe:

cl -c -I. -MD -Zi -DNDEBUG -DVERSION=\"0.43\" -DXS_VERSION=\"0.43\" ^
  /Foxs/BSON.obj "-IC:\Opt\Perl512.32\lib\CORE" xs\BSON.c

Вот коды ошибок и их частоты:

 6 C2040 'operator' : 'identifier1' differs in levels of indirection
                      from 'identifier2'
32 C2059 syntax error : 'token'
 7 C2081 'identifier' : name in formal parameter list illegal
54 C2143 syntax error : missing 'token1' before 'token2'
 2 C2371 'identifier' : redefinition; different basic types

Мне кажется, что все эти ошибки являются признаками сбоя на этапе предварительной обработки.

Я не буду вставлять сюда весь вывод, но начало:

c:\opt\perl512.32\lib\core\win32.h(368) : error C2143: Syntaxfehler: Es fehlt ')' vor '*'
c:\opt\perl512.32\lib\core\win32.h(368) : error C2081: 'Stat_t': Name in der formalen Parameterliste ist ungültig
c:\opt\perl512.32\lib\core\win32.h(368) : error C2143: Syntaxfehler: Es fehlt '{' vor '*'
c:\opt\perl512.32\lib\core\win32.h(368) : error C2059: Syntaxfehler: ')'
c:\opt\perl512.32\lib\core\win32.h(369) : error C2143: Syntaxfehler: Es fehlt ')' vor '*'
c:\opt\perl512.32\lib\core\win32.h(369) : error C2081: 'STRLEN': Name in der formalen Parameterliste ist ungültig

Итак, учитывая ключ Stat_t, я попытался отследить проблему.

ack Stat_t c:\opt\perl512.32\lib\core\

Итак, Stat_t определяется в CORE\dosish.h и CORE\unixish.h. Оба условно включены с CORE\perl.h. Который включен из файла, который я пытаюсь скомпилировать. Так что должно работать.

  • Что я могу сделать, чтобы отследить проблему?
  • Что является причиной этой ошибки?

В сети всплывают похожие ошибки. Вот поиск Google для вас:

http://www.google.com? Д = Perl + win32.h + c2059 + c2143 + c2081 + c2371

Спасибо.

1 Ответ

0 голосов
/ 26 августа 2011

Это похоже на сообщение об ошибке. Может быть, стоит отправить на баг-трекер CPAN? https://rt.cpan.org/Public/Dist/Display.html?Name=MongoDB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...