|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Доброго дня! Продолжаю терзать embedded C++. Возникла необходимость поиска функции по ее имени (строка символов, например "myFunc") с дальнейшем присваиванием ей параметра типа wstring и запуска. Функция возвращает тоже wstring. В Дельфи для этого есть процедурный тип, есть ли аналог в C++? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 09:40 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Если функция есть в таблице экспорта, то GetProcAddress() ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 09:49 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Я пишу на С/С++ уже 18 лет и каждый раз, когда я встречаю подобный вопрос, то я не понимаю как автор дошел до такого, что он не знает, где у него какая функция и требуется поиск в run-time. На мой взгляд, если у тебя возникают подобные проблемы это свидетельствует о плохом дизайне твоего приложения и он должен быть пересмотрен. Для всего остального, вроде скриптовых языков, есть IDispatch . Если нужно узнать имя исполняемой кодом функции то используешь макрос __FUNCTION__ ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 09:57 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbDima TЕсли функция есть в таблице экспорта, то GetProcAddress() Имеется ввиду работа с DLL? Обычно экспортируют в DLL, но при желании можно и в EXE. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 09:59 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
CerebrumЯ пишу на С/С++ уже 18 лет и каждый раз, когда я встречаю подобный вопрос, то я не понимаю как автор дошел до такого, что он не знает, где у него какая функция и требуется поиск в run-time. На мой взгляд, если у тебя возникают подобные проблемы это свидетельствует о плохом дизайне твоего приложения и он должен быть пересмотрен. Для всего остального, вроде скриптовых языков, есть IDispatch . Если нужно узнать имя исполняемой кодом функции то используешь макрос __FUNCTION__ Программе, передается извне, имя функции и параметры, которые она должна выполнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:02 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, COM + IDispatch ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:04 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbПрограмме, передается извне, имя функции и параметры, которые она должна выполнить. или выноси эти функции в DLL и используй GetProcAddress, как уже предложили ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:08 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
CerebrumSergey_rbПрограмме, передается извне, имя функции и параметры, которые она должна выполнить. или выноси эти функции в DLL и используй GetProcAddress, как уже предложили Видимо, это самый оптимальный вариант. В Дельфи, эти функции объявляются в разделе published и находятся по имени через MethodAddress ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:13 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Cerebrum example Это ужасно, особенно тёплые-ламповые скриншоты MSVS 6. Не уж то за 20 лет не придумали чего-нибудь более удобного чем вся эта куча бойлерплейта, в котором легко допустить ошибку? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:16 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
CerebrumSergey_rbПрограмме, передается извне, имя функции и параметры, которые она должна выполнить. или выноси эти функции в DLL и используй GetProcAddress, как уже предложили Не обязательно выносить в DLL, экспортировать можно в EXE, но искать и вызывать можно будет только изнутри этого EXE, но в данном случае это подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:20 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
NekZCerebrum example Это ужасно, особенно тёплые-ламповые скриншоты MSVS 6. Не уж то за 20 лет не придумали чего-нибудь более удобного чем вся эта куча бойлерплейта, в котором легко допустить ошибку? Я пишу на embedded C++, там и такого щастья нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:21 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
NekZ, C/C++ вообще языки, использование которых суть всегда хотьба по канату без страховки. Для всех остальных, кто боится испачкать руки есть PowerShell и .Net ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:22 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Так работает внутри EXE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:31 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TТак работает внутри EXE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Спасибо! Сделал по примеру, функция появилась в списке экспортируемых функций, но по имени не находится. Подозреваю, что дело в кодировке , т.к. чтобы проект откомпилировался, приходится добавлять L перед именем функции Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 10:49 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbDima TТак работает внутри EXE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Спасибо! Сделал по примеру, функция появилась в списке экспортируемых функций, но по имени не находится. Подозреваю, что дело в кодировке , т.к. чтобы проект откомпилировался, приходится добавлять L перед именем функции Код: plaintext 1.
Если не ставить L перед "text_exp" , то ошибка Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:06 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Если делать так Код: plaintext 1.
то все равно не находится. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:12 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, а так?: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:23 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЕсли не ставить L перед "text_exp" , то ошибка Ошибка потому что у тебя проект юникодный, значит надо ставить L. У меня проект не юникодный, мне не надо ставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:24 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЕсли делать так Код: plaintext 1.
то все равно не находится. Ты просто используй имена, которые реально экспортируются dll - http://www.dependencywalker.com/ Может, там и нет того, что ты ищешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:28 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
rdb_devSergey_rb, а так?: Код: plaintext 1.
Код Код: plaintext 1.
Ошибка автор error C2440: 'type cast' : cannot convert from 'char [9]' to 'class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >' ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:28 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
КотовасияSergey_rbЕсли делать так Код: plaintext 1.
то все равно не находится. Ты просто используй имена, которые реально экспортируются dll - http://www.dependencywalker.com/ Может, там и нет того, что ты ищешь. Я открываю exe в TotalCommander через F3 В разделе экспорта вижу экспротированную функцию test_exp Думаю, что дело все таки в кодировках. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:31 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Для тебя правильно так Код: plaintext 1.
Если хочешь чтобы скомпилировалось без L, то в свойствах проекта переключи General - Charaster set = Not set. Но это повлияет на весь проект и в другом месте может перестать компилироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:34 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TДля тебя правильно так Код: plaintext 1.
Если хочешь чтобы скомпилировалось без L, то в свойствах проекта переключи General - Charaster set = Not set. Но это повлияет на весь проект и в другом месте может перестать компилироваться. Переключатель не нашел, в опциях проекта прописано следующее Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:40 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, ну ты первым параметром в GetProcAddress() хоть хэндл загруженной библиотеки используешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:41 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
КотовасияSergey_rb, ну ты первым параметром в GetProcAddress() хоть хэндл загруженной библиотеки используешь? Я не загружаю библиотеку, я ищу функцию в exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:45 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
это убрать Код: plaintext 1.
но если у тебя имя функции придет как wstring, то правильнее добавить L. Иначе потом надо будет wstring конвертировать в string. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:46 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TОшибка потому что у тебя проект юникодный, значит надо ставить L. У меня проект не юникодный, мне не надо ставить.Так он уже ставил L перед литералом... Может у него проект наоборот - неюникодный? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:48 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb... Я открываю exe в TotalCommander через F3 В разделе экспорта вижу экспротированную функцию test_exp ... Скриншот покажи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:48 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
rdb_devDima TОшибка потому что у тебя проект юникодный, значит надо ставить L. У меня проект не юникодный, мне не надо ставить.Так он уже ставил L перед литералом... Может у него проект наоборот - неюникодный? Ставил и работало 21701299 Sergey_rbЕсли не ставить L перед "text_exp" , то ошибка ХЗ почему эта L его смутила. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:50 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima Trdb_devпропущено... Так он уже ставил L перед литералом... Может у него проект наоборот - неюникодный? Ставил и работало 21701299 Sergey_rbЕсли не ставить L перед "text_exp" , то ошибка ХЗ почему эта L его смутила. С буквой L не находит функцию Какой тогда тип передавать в эту функцию? автор wstring f_name; p_test_exp test_exp_fn = (p_test_exp)GetProcAddress(GetModuleHandle(NULL), f_name) Выдает ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:53 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbDima Tпропущено... Ставил и работало 21701299 пропущено... ХЗ почему эта L его смутила. С буквой L не находит функцию Какой тогда тип передавать в эту функцию? автор wstring f_name; p_test_exp test_exp_fn = (p_test_exp)GetProcAddress(GetModuleHandle(NULL), f_name) Выдает ошибку Ошибка Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 11:56 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbавтор wstring f_name; p_test_exp test_exp_fn = (p_test_exp)GetProcAddress(GetModuleHandle(NULL), f_name) Выдает ошибку Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:06 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbDima Tпропущено... Ставил и работало 21701299 пропущено... ХЗ почему эта L его смутила. С буквой L не находит функцию Странно. Похоже какие-то особенности компилятора. Попробуй так без L Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:11 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Я видимо совсем тупой автор wstring f_name; f_name.append(L"test_exp"); p_test_exp test_exp_fn = (p_test_exp)GetProcAddress(GetModuleHandle(NULL), f_name.c_str()); Не находит функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:17 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TSergey_rbпропущено... С буквой L не находит функцию Странно. Похоже какие-то особенности компилятора. Попробуй так без L Код: plaintext 1.
Проект скомпилировался, но функция не нашлась может проблема в Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:22 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЯ видимо совсем тупой автор wstring f_name; f_name.append(L"test_exp"); p_test_exp test_exp_fn = (p_test_exp)GetProcAddress(GetModuleHandle(NULL), f_name.c_str()); Не находит функцию. Ты не торопись wstring использовать. Добейся для начала повторения работы моего примера 21701426 У тебя таких функций много будет? Если немного, то проще как-то так сделать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Или в std::map загнать список функций при старте проги. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:27 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbDima Tпропущено... Странно. Похоже какие-то особенности компилятора. Попробуй так без L Код: plaintext 1.
Проект скомпилировался, но функция не нашлась может проблема в Код: plaintext 1.
По хэлпу это должен быть хэндл EXE. Ты же в EXE этот код вставил? https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683199(v=vs.85).aspx If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file). Можешь проверку добавить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:32 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Проверил, хендл формы находится. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 13:28 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Функция по прежнему не находится ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 13:33 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TSergey_rbЯ видимо совсем тупой пропущено... Не находит функцию. Ты не торопись wstring использовать. Добейся для начала повторения работы моего примера 21701426 У тебя таких функций много будет? Если немного, то проще как-то так сделать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Или в std::map загнать список функций при старте проги. Это на крайний случай. Хотел сделать как в Дельфи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 13:34 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbХотел сделать как в Дельфи. Хотел - делай. В Си тоже есть процедурный тип. Более, того, он практически ничем не отличается от дельфийского. Поэтому начни с того, что покажи нам свой дельфийский код, а то местные гуру совсем в глухие дебри уйдут. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 13:38 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, Мне как-то пришлось использовать функцию из одной библиотечки, она была описана вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Так вот, при попытке найти функцию "GenerateECCPair" ни черта не получалось, я посмотрел с помощью http://www.dependencywalker.com/, и фактическое имя функции оказалось равным "_GenerateECCPair@16". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 13:52 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Котовасия, Потому рекомендуется все экспортировать как extern "C" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 15:05 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
SiemarglКотовасия, Потому рекомендуется все экспортировать как extern "C" Чужай dll-ка была, без исходников. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 15:33 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
КотовасияSergey_rb, Мне как-то пришлось использовать функцию из одной библиотечки, она была описана вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Так вот, при попытке найти функцию "GenerateECCPair" ни черта не получалось, я посмотрел с помощью http://www.dependencywalker.com/, и фактическое имя функции оказалось равным "_GenerateECCPair@16". Не знаю как в студии, а в GCC можно заманглить хоть что . В коде это можно сделать через вызов abi::__cxa_demangle, ну и потом уже передать в dlsym. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 15:47 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
SiemarglПотому рекомендуется все экспортировать как extern "C" Если ты не заметил, то там именно так и делается. Но у stdcall свои правила. В любом случае это не то, что надо аффтару. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 16:52 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Я правильно понял, что задача с кодировками не решаема? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 17:07 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Ты можешь скриншот приложить со списком экспортируемых функций модуля? Sergey_rbЯ правильно понял, что задача с кодировками не решаема? Решаема. Разными методами. Методом перебора, метод ветвей и границ, метод эластичной сети, метод отжига - много их. А что за "задача с кодировками"? Ну вот кто, кроме тебя может знать опции твоего проекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 17:18 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
КотовасияТы можешь скриншот приложить со списком экспортируемых функций модуля? Sergey_rbЯ правильно понял, что задача с кодировками не решаема? Решаема. Разными методами. Методом перебора, метод ветвей и границ, метод эластичной сети, метод отжига - много их. А что за "задача с кодировками"? Ну вот кто, кроме тебя может знать опции твоего проекта? Тот, кто умеет читать Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 19:18 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TТак работает внутри EXE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Сделал как описано выше. В UNICODE все работает без L/ ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 19:58 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
У меня без L не компилируется ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 20:16 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
blonduserDima TТак работает внутри EXE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Сделал как описано выше. В UNICODE все работает без L/ Как ни странно у меня тоже работает в MSVC2017. К сожалению не могу затестить в других компиляторах от MS, но судя по ошибкам у ТС 21701299 , другие компиляторы MS считают по другому. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 20:19 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TКак ни странно у меня тоже работает в MSVC2017. К сожалению не могу затестить в других компиляторах от MS, но судя по ошибкам у ТС 21701299 , другие компиляторы MS считают по другому. У меня 2012 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 20:25 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbКотовасияТы можешь скриншот приложить со списком экспортируемых функций модуля? пропущено... Решаема. Разными методами. Методом перебора, метод ветвей и границ, метод эластичной сети, метод отжига - много их. А что за "задача с кодировками"? Ну вот кто, кроме тебя может знать опции твоего проекта? Тот, кто умеет читать Код: plaintext 1.
Понимаешь у тех, кто "умеет читать" кто здесь отвечает, таких проблем просто нет... Потому не умничай, а давай всю инфу, что просят. Ты же в С++ базовом ни бум бум, не то что в тонкостях системных ньюансов. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 21:50 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Вы все на мерседесах студиях, я у меня запорожец Emdedded C++ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 08:44 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbВы все на мерседесах студиях, я у меня запорожец Emdedded C++ То есть, на вопросы ты отвечать не будешь, понятно. Зачем пришел? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 10:08 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
КотовасияSergey_rbВы все на мерседесах студиях, я у меня запорожец Emdedded C++ То есть, на вопросы ты отвечать не будешь, понятно. Зачем пришел? Я уже на все ответил. Без буквы L не компилируется, а с буквой L не находит функцию по имени. Функция экспортируется, файл со скрином приложил. Какие еще были вопросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 12:10 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Dima TТак работает внутри EXE Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Разве тут не __declspec(dllimport) должно быть? Хотя это не внешняя dll, но все же ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 12:39 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rbКакие еще были вопросы? Был вопрос почему ты не сделаешь точно так же как в Delphi, поскольку в Си тоже есть процедурные типы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 12:45 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, не надо смотреть Тоталом - он декорирование убирает посмотри в бинарном виде содержимое (раз Юникодный проект, то буквы будут чередоваться через 0) или есть есть в той версии >dumpbin /exports test64.exe ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 12:50 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Я просто оставлю здесь этот код, написанный за пять минут. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 13:31 |
|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, Такой вариант не пробовали Код: plaintext 1. 2. 3. 4. 5. 6.
Взято тут ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 13:59 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017743]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
others: | 262ms |
total: | 439ms |
0 / 0 |