Я пытаюсь получить доступ к некоторым экспортированным функциям из MSVS 2013 C/C++ DLL через js-ctypes FireFox. Я пробовал:Экспорт функций в MSVS 2013 в C/C++ DLL для Mozilla js-ctypes для использования
- Изменение "Compile В разделе" Настройки для C и C++
- Изменение платформы разрядность (32 против 64 бит).
- Используя все доступные ABI константы отсюда: https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes (
default_abi
,stdcall_abi
,winapi_abi
) - Я проверил мою DLL с помощью «Dependency Walker» и убедились, что его имя не было украшено, и что моя функция действительно была экспортирована.
Вот мой DLL код:
#define DllExport extern "C" __declspec(dllexport)
DllExport void Test()
{
::MessageBox(NULL, _T("Test!"), _T("Title"), MB_OK);
}
Независимо от того, что я стараюсь, мне кажется, что я всегда получаю эту ошибку:
console.error: myxpi:
Message: Error: couldn't find function symbol in library
Stack:
[email protected]://gre/modules/addons/XPIProvider.jsm -> jar:file:///c:/users/kgk/appdata/local/temp/tmpdyrqfd.mozrunner/
extensions/[email protected]!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-qeiy1nt1uinqug-at-jetpack/myxpi/lib/main.js:34:18
button<[email protected]://gre/modules/addons/XPIProvider.jsm -> jar:file:///c:/users/kgk/appdata/local/temp/tmpdyrqfd.mozrunner/extensions/[email protected]!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-qeiy1nt1uinqug-at-jetpack/myxpi/lib/main.js:16:9
Кто-нибудь есть какие-либо идеи, что являются собственно настройки?
FF - это 32 бита (насколько я знаю), но я не знаю, использует ли он что-то еще, например python для загрузки DLL.
Я думал, что «Компилировать как» не имеет значения, пока функции экспорта используют правильное объявление (например, __cdecl
).
Я не уверен, что это производит, хотя (но мои настройки проекта являются для __cdecl
):
#define DllExport extern "C" __declspec(dllexport)
Но я попытался заменить это тоже и с помощью DEF файлов ...
Любая идея, почему ничего не кажется вок?
Похожие вопросы:
Making a C DLL in Visual Studio suitable for use by js-ctypes in Mozilla
Build a DLL to be used by Mozilla js-ctypes
Удивительный ответ! Спасибо, что поделился. Пожалуйста, пометьте ваши будущие сообщения с помощью firefox-addon, не так много людей просматривают jsctypes, но они всегда делают этот тег firefox-addon, я полностью пропустил эту тему. – Noitidart
, чтобы прояснить вопрос о том, «вы должны определить аргумент void для функций без аргументов», на самом деле это тип возвращаемого вами типа void. –