За последние 24 часа нас посетили 19197 программистов и 1634 робота. Сейчас ищут 899 программистов ...

w32api

Тема в разделе "Прочие вопросы по PHP", создана пользователем Hormold, 29 июн 2009.

  1. Hormold

    Hormold Активный пользователь

    С нами с:
    29 июн 2009
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте!
    Есть DLLка.
    В ней функция на c++:
    Код (Text):
    1. PLUGIN_EXPORT Int x_GivePlayerMoney(int playerid)
    2. {
    3. int index;
    4. int ret;
    5. if (!amx_FindPublic(gAMX,"x_GetPlayerMoney",&index)){
    6. amx_Push(gAMX, playerid);
    7. amx_Exec(gAMX, &ret, index);
    8. }
    9. return (int)ret;
    10. }
    Код (Text):
    1. .....
    2. EXPORTS
    3.     x_GivePlayerMoney
    4. ......
    Так-же есть php файлик:
    PHP:
    1.  
    2. <?php
    3. dl("php_w32api.dll");
    4. w32api_register_function("caller.dll","x_GivePlayerMoney","int");
    5. echo x_GivePlayerMoney(0);
    6. ?>
    7.  
    PHP Version: 4.2 (Только в этой версии заметил работу w32api_register_function)
    Вылетает примерно такая ошибка:
    [​IMG]

    ----------------------------
    Далее PHP 4.3.4
    PHP:
    1. <?php
    2. dl("php_w32api2.dll"); // для этой версии
    3. $api = new win32();
    4. $api->RegisterFunction("Int x_GivePlayerMoney(int playerid) From caller.dll", 0);
    5. echo $api->x_GivePlayerMoney(0);
    6. ?>
    7.  
    Ошибка такая-же.
    С другими dll работает(редко).
     
  2. Hormold

    Hormold Активный пользователь

    С нами с:
    29 июн 2009
    Сообщения:
    2
    Симпатии:
    0
    Тест на PHP 5.0.4.
    Подключен FFI.
    PHP:
    1. $windows = new ffi ("[lib='caller.dll'] int xGivePlayerMoney(int playerid);" );
    2. echo $windows->xGivePlayerMoney(0);
    Ошибка...

    PHP:
    1. $windows = new ffi ("[lib='caller.dll'] double AddNumbers(double a, double b);" );
    2. echo $windows->AddNumbers(33,2);
    Отлично работает...

    Получается ошибка в C++? Может кто поможет...
     
  3. foo

    foo Активный пользователь

    С нами с:
    24 июн 2009
    Сообщения:
    5
    Симпатии:
    0
    попробуй player_id ругой задать, существующий.