|
|
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть проблема. Создаю dll с помощью dll wizard. В него добавляю свои функции и чужую библиотеку Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В функции formKey - используется для инициализации объекта оператор new и потом деструктор для объекта. В свойствах проэкта галка Linker->Use dynamic RTL - убрана, галка Packages->Bild with runtime packages - не убрана (если ее убрать - вываливаются ошибки [Linker Error] Unresolved external '__fastcall MyObjectC::~MyObjectC()' referenced from C:\DLLUNIT.OBJ) Таким образом галка Bild with runtime packages - не убрана. Этот cpp-файл я build'ю и затем из командной строки пишу implib dllprj.lib dllprj.dll Получившуюся dllprj.dll я теперь хочу протестить. Для этого создаю новый проэкт - Console Application, код которого следующий: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: plaintext 1. Пробовал создать Console Application, в него добавить все функции, которые я в dll добавляю и в main'е вызывать formKey(); - работает нормально, как и ддолжно - без ошибок. Подскажите, может кто уже сталкивался с подобной проблемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 16:17 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
У вас соглашения о вызовах одинаковые ? Похоже extern "C" __declspec(dllexport)void formKey(); не соответствует typedef void (WINAPI *CI_formKey)(void ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 16:32 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
А как задать одинаковые соглашения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:12 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
если хочешь экспортировать функцию как formKey, пиши def-файл, по умолчанию она экспортируется как какое-нить _formKey@2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:17 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
if(cForm==NULL)айайай; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:18 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
А нельзя без def файла обойтись - мне нужно, чтобы был всего один файл - dll. Как-то можно это в dll указать? автор по умолчанию она экспортируется как какое-нить _formKey@2 Как определить какое имя будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:21 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
Сообщаю: Выполнил в командной строке tdump dllPrj.dll > dump.txt В файле dump.txt нашел строки: RVA Ord. Hint Name -------- ---- ---- ---- 00001640 1 0005 _formKey В проге - заменил Код: plaintext 1. Код: plaintext 1. Заработало, мать ее ети!!!:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:27 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
Сейчас еще 1. протестю с AnsiString'ом 2. Вопрос остается открытым - как при создании dll сделать задать имена функций, чтобы потом их можно было дергать с таким же названием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:30 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
c AnsiString - не выходит - ругается - компилится нормально а в рантайме вылетает AccessViolation функцию написал такую: Код: plaintext 1. Код: plaintext 1. 2. 3. Как сделать, чтобы работало не знаю, сейчас просто заменил на char* как борланд советует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 09:48 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
tdump ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 12:11 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
чего tdump?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 17:30 |
|
||
|
AnsiString и чужая библиотека в dll
|
|||
|---|---|---|---|
|
#18+
смотри, под каким именем экспортируется функция. Плюс соглашения о вызове в длл и в приложении должны совпадать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=322&tid=2029970]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
4ms |
| others: | 240ms |
| total: | 371ms |

| 0 / 0 |
