2016-11-15 8 views
0

Существует много информации о том, как экспортировать функции из DLL (что я делал много раз), но я слышал, что также можно экспортировать функции из исполняемого файла , так что внешняя dll может их вызвать.Экспорт функций из исполняемого файла с использованием файла def

Хотя мне удалось получить эту работу, кажется, что есть какая-то проблема с точкой входа:

  • Если явно не установлено, то по умолчанию неправильно «главный» в скрытая подбиблиотека.
  • Если это - это, то явно введены его аргументы, argc и argv (argc может быть ~ 20000000 или ~ -700000).

У меня возникли проблемы с поиском любой документации по экспорту функций из исполняемого файла - следует ли мне прибегать к намеку и не делать этого?

[Context: Это было частью усилий, направленных на то, чтобы наш процесс работал как на Windows, так и на Linux. Версия Linux случайно загружала функции из исполняемого файла, а не те, которые явно экспортировались из сопутствующей DLL (функции имели одно и то же имя, но разные аргументы). Мы решили попробовать работать с этим, а также экспортировать функции из исполняемого файла на Windows, а также]

ответ

0

Я отправляю это просто суммировать свое собственное обучение на этом, в отсутствии лучшего ответа:.

  • Сразу после добавления файла def компоновщик жаловался, что он не может определить точку входа. Именно по этой причине я добавил ссылку/ENTRY. Однако во время переделки я удалил/ENTRY при удалении файла def, и я смог скомпилировать его без ошибок - я должен был временно удалить противоречивую возможность.
  • Файл Защиты делает экспортировать функции из .exe успешно, и эти могут затем использоваться в библиотеке DLL этого процесса (если это ссылки на DelayImp.lib и .lib исполняемого файла).
  • Я никогда не мог получить параметр/ENTRY для работы удовлетворительно и в сочетании с мягко обескураживающими комментариями к элементу MSDN [https://msdn.microsoft.com/en-us/library/f9t8842e.aspx], я не вижу причин использовать его в этом случае.

Я надеюсь, что это будет полезно для кого-либо другого, пытающегося сделать что-то подобное. Я буду рад повторно назначить более технический ответ как «решение», если появится ...

Смежные вопросы