редакцией, потому что я имел DLL построен неправильно:Использование dll в js-ctypes mozilla add-on sdk - просмотр STDOUT программы?
Я построил 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».
Хорошая тема на эту тему: https://ask.mozilla.org/question/1086/x11-getting-output-of-nsiprocess/?answer=1116#post-id-1116 – Noitidart
Hrmm. Похоже, что речь идет о запуске команд оболочки из надстройки, а не в методах запуска в общей библиотеке - или я ошибаюсь? – Derek
Вы правы. Чтобы получить выход из dll, вы должны использовать оболочку для ее запуска, а затем получить вывод оболочки. Проверьте subprocess.jsm. – Noitidart