2011-04-03 3 views
3

У меня небольшая проблема, у меня есть программа на C++, но PHP не показывает вывод, только «пустой». Я сделал небольшую программу для тестирования, когда я использую «printf» и «gcc» для компиляции, она работает нормально, но когда я скомпилирую один и тот же прогон с помощью «g ++», он не может отображать содержимое на странице php. Есть идеи? Я не могу использовать "GCC", потому что мой проект в C++Выход C++ не отображается в PHP

Я использую эту версию GCC/г ++

г ++ (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)

EDIT: Я упростил проблему, чтобы вы могли понять, что здесь происходит, спасибо за помощь. Теперь я получаю недостающую библиотечную ошибку.

Я собирал файлы, используя следующую процедуру команды:

gcc -o prueba1 prueba.c 
g++ -o prueba2 prueba.cpp 

Так «prueba1» является один скомпилирован с GCC и «prueba2» является один скомпилирован с G ++

Вот файл test.php

<?php 
     echo "Executing file compiled with GCC <br />"; 
     echo shell_exec("./prueba1"); 
     echo "<br />"; 
     echo "Executing file compiled with G++ <br />"; 
     echo shell_exec("./prueba2 2>&1"); 
?> 

Я получаю это в браузере:

Executing file compiled with GCC 
Hello World (GCC) 
Executing file compiled with G++ 
./prueba2: /opt/lampp/lib/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6) 

Вот файл prueba.c:

#include <stdio.h> 

int main(int argc, char *argsv[]){ 

printf("Hello World (GCC)\n"); 

return(0); 

} 

Вот файл prueba.cpp:

#include <iostream> 

using namespace std; 

int main(int argc, char *argsv[]){ 

cout << "Hello World (G++)" << endl; 

return(0); 

} 
+12

Этот вопрос не имеет смысла. У вас есть исходный код на C++, который вы компилируете с помощью GCC? С чем это связано с PHP? –

+3

Вам необходимо предоставить нам код. –

+1

, пожалуйста, покажите фрагмент ** PHP **, который вы используете для вызова своей внешней программы. – Mat

ответ

2

Переименование /opt/lampp/lib/libgcc_s.so.1 в /opt/lampp/lib/libgcc_s.so.1.backup, кажется, C++ пытается открыть один вместо тот, который linux делает при запуске из командной строки, спасибо за помощь ребятам

Смежные вопросы