Вывод C ++ не отображается в PHP - PullRequest
3 голосов
/ 03 апреля 2011

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

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

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

РЕДАКТИРОВАТЬ: Я упростил проблему, чтобы вы могли понять, что здесь происходит, спасибо за вашу помощь. Теперь я получаю недостающую библиотечную ошибку.

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

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);

}

1 Ответ

2 голосов
/ 04 апреля 2011

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

...