2013-05-29 4 views
2

Я использую активный perl 5.14.2. Здесь я пытаюсь использовать библиотеку окна C в моем PERL-код с помощью Инлайн :: CInline :: C build failure

use strict; 

use Inline C => DATA => 
      CCFLAGS => '-std:C99 -Tx86-coff -Zi -Ob1 -fp:precise -W1 -Gd -Ze -Go -D_USER_SPACE_' => 
      INC => '"-ID:\test\incl"' => 
      LIBS => '"-LD:\test\lib" -llib1 -llib2 -llib3 -llib4'; 


test(); 

__END__ 
__C__ 

#include <incl/hd1.h> 

#include <stdio.h> 

#define __STDC_FORMAT_MACROS 
#include <inttypes.h> 

void test(void) { 
......... 

В то время как я пытаюсь запустить скрипт его неисправного с ошибкой ниже

Warning. No Inline C functions bound to Perl in .\test.pl 
Check your C function definition(s) for Inline compatibility 


Microsoft (R) Program Maintenance Utility Version 9.00.30729.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

     C:\Perl5.14\bin\perl.exe C:\Perl5.14\lib\ExtUtils\xsubpp -typemap "C:\Perl5.14\lib\ExtUtils\typemap" test_pl_7fbb.xs > test_pl_7fbb.xsc && C:\Perl5.14\bin\perl.exe -M 
ExtUtils::Command -e "mv" -- test_pl_7fbb.xsc test_pl_7fbb.c 
     cl -c -I"D:/test" "-ID:\test\incl" -std:C99 -Tx86-coff -Zi -Ob1 -fp:precise -W1 -Gd -Ze -Go -D_USER_SPACE_ -MD -Zi -DNDEBUG -O1 -DVERSIO 
N=\"0.00\" -DXS_VERSION=\"0.00\" "-IC:\Perl5.14\lib\CORE" test_pl_7fbb.c 
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.EXE"' : return code '0xc0000135' 
Stop. 

A problem was encountered while attempting to compile and install your Inline 
C code. The command that failed was: 
    C:\PROGRA~2\MICROS~1.0\VC\bin\nmake.exe > out.make 2>&1 

The build directory was: 
D:\test\_Inline\build\test_pl_7fbb 

To debug the problem, cd to the build directory, and inspect the output files. 

at .\test.pl line 0 
     ...propagated at C:/Perl5.14/site/lib/Inline/C.pm line 772. 
INIT failed--call queue aborted. 
PS D:\cmapl_test> perl -v 

This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x86-multi-thread 
(with 1 registered patch, see perl -V for more detail) 

Copyright 1987-2011, Larry Wall 

Binary build 1402 [295342] provided by ActiveState http://www.ActiveState.com 
Built Oct 7 2011 15:49:44 

Perl may be copied only under the terms of either the Artistic License or the 
GNU General Public License, which may be found in the Perl 5 source kit. 

Complete documentation for Perl, including FAQ lists, should be found on 
this system using "man perl" or "perldoc perl". If you have access to the 
Internet, point your browser at http://www.perl.org/, the Perl Home Page. 

Я попытался построить файл test_pl_7fbb.c с помощью команды:

cl -c "-ID:\test" "-ID:\test\include" -std:C99 -Tx86-coff -Zi -Ob1 -fp:precise -W1 - 
Gd -Ze -Go -D_USER_SPACE_ -MD -Zi -DNDEBUG -O1 "-DVERSION=0.00" 
"-DXS_VERSION=0.00" "-IC:\Perl5.14\lib\CORE" test_pl_7fbb.c 

Он был заполнен без ошибок.

Я предполагаю, что проблема -I "D:/test", используемая Inline при компиляции, вызывает проблему.

Заранее благодарим за помощь.

+1

«Мое предположение»? Зачем угадывать, когда вы можете проверить? Получаете ли вы ту же ошибку при добавлении этой опции? – ikegami

ответ

1

Возможно, вы установили Visual C VC-9 (VS 2008), но в прошлый раз, когда я использовал Inline C для Activeperl, он требовал VC-6.

Если это причина, вы можете попробовать установить VC 6 или переключиться на Strawberry Perl с включенной цепью инструментов gcc 4.6.

+0

Я пробовал с VC-6, но это дает больше ошибок, и большинство из них недоступны. – Kallol

+0

Это не должно быть проблемой. – ikegami

0

Вы можете попробовать установить MinGW с серверов PPM ActivePerl. Вероятно, вам понадобится перекомпилировать многие из ваших установленных модулей, но я уверен, что он будет работать так, как Inline :: C.