|
Как найти функцию по ее имени?
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=57&msg=39716017&tid=2017743]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 253ms |
total: | 382ms |
0 / 0 |