Использование dll в надстройке js-ctypes mozilla sdk - просмотр STDOUT программы?

Отредактировано, потому что у меня неправильно построена DLL:

Я создал DLL, и если я выполняю команду dumpbin /exports для DLL, я вижу следующее:

Dump of file stun_driver.dll

File Type: DLL

  Section contains the following exports for stun_driver.dll

00000000 characteristics
546E6C63 time date stamp Thu Nov 20 17:34:11 2014
    0.00 version
       1 ordinal base
       4 number of functions
       4 number of names

ordinal hint RVA      name

      1    0 00001005 OPENSSL_Applink = @ILT+0(_OPENSSL_Applink)
      2    1 00001320 launch_stun = @ILT+795(_launch_stun)
      3    2 000011D6 stop_stun = @ILT+465(_stop_stun)
      4    3 00001078 test_print = @ILT+115(_test_print)

  Summary

   1A000 .data
    2000 .idata
   46000 .rdata
    F000 .reloc
  135000 .text

Мой код для выполнения функции «test_print» выглядит следующим образом:

/* import js-ctypes */
 Cu.import("resource://gre/modules/ctypes.jsm")
 var stun_driver = ctypes.open("C:\\stun_driver.dll");

const test_print = stun_driver.declare("test_print", ctypes.default_abi, ctypes.int32_t);
.
.
.//in a button
test_print();

Итак, мой вопрос: если мой test_print() выполняет printf("Hello World"), куда идет этот текст? Кажется, он не регистрируется в консоли моего браузера или в консоли DOS, из которой я запускаю «cfx run».


person Derek    schedule 20.11.2014    source источник
comment
Хорошая тема на эту тему: ask.mozilla.org/question/1086/x11-getting-output-of-nsiprocess/   -  person Noitidart    schedule 21.11.2014
comment
Хм. Похоже, речь идет о запуске команд оболочки из надстройки, а не о запуске методов в общей библиотеке — или я ошибаюсь?   -  person Derek    schedule 21.11.2014
comment
Ты прав. Чтобы получить вывод dll, вы должны использовать оболочку для ее запуска, а затем получить вывод оболочки. Проверьте subprocess.jsm.   -  person Noitidart    schedule 21.11.2014
comment
Это может оказаться полезным: mar10.noblogs.org/post/2014/10/02/   -  person Noitidart    schedule 01.12.2014


Ответы (1)


Если вы запускаете Firefox из окна терминала, вы должны увидеть вывод там.

person therealjeffg    schedule 21.11.2014
comment
Я вижу вывод в этом окне терминала из javascript console.log() и тому подобного, но я не вижу никакого вывода из моей программы C - person Derek; 21.11.2014
comment
@Derek, я думаю, вам нужно запустить firefox с параметром командной строки -console, см. здесь: stackoverflow.com/a/10793558/1828637 (думаю это только окна) - person Noitidart; 21.11.2014
comment
Интересно, что если я использую github.com/matthewkastor/Redirector/archive/master.zip и запускаю Firefox, используя его, я могу получить вывод консоли. Я только что обнаружил, что у cfx есть опция --binary-args, которую я могу использовать для передачи -console в firefox. Это заставляет терминал работать с firefox, но не получает никакого вывода. Однако, если я закрою этот пустой терминал (который отключит Firefox), я увижу, что вывод отображается в исходном терминале с моим cfx run в нем. - person Derek; 21.11.2014