Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: DLL на C++ Builder 6.0 Добавлено: 04.07.11 13:02  

Автор вопроса:  andrey | ICQ: 305986093 
Допустим в длл-ке есть функция OpenPort
DLL_EI int  OpenPort(int NCom, HWND hw);
Это в билдэре, в vb.net я разобрался, как к ней обратится
Declare Ansi Function _OpenPort Lib "LibThread.dll" (ByVal NCom As Integer, ByVal hw As Long) As Long
.
Но основная программа написана на vb.6, а он не хочет понимать подчеркивание в имени функции, вот и вопрос как быть, как её декларировать в vb.6?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #1 Добавлено: 04.07.11 13:06
  1. Declare Function QWERTY Lib "LibThread.dll" Alias "_OpenPort" (ByVal NCom As Integer, ByVal hw As Long) As Long

Ответить

Номер ответа: 2
Автор ответа:
 andrey



ICQ: 305986093 

Вопросов: 3
Ответов: 41
 Профиль | | #2 Добавлено: 04.07.11 13:14
Спасибо за ответ, только вот ругается : "Bad dll calling convention", да так, что вылетает.

Ответить

Номер ответа: 3
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #3 Добавлено: 04.07.11 13:18
_stdcall ?

Ответить

Номер ответа: 4
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #4 Добавлено: 04.07.11 13:26
  1. DLL_EI int  OpenPort(int NCom, HWND hw);

int - в c++ 4 байта, в vb6 - 2 байта.
значит нужно ByVal NCom As long

Ответить

Номер ответа: 5
Автор ответа:
 andrey



ICQ: 305986093 

Вопросов: 3
Ответов: 41
 Профиль | | #5 Добавлено: 04.07.11 13:42
не катит в vb.net попробовал short, так там сработало все нормально, как не странно.

Ответить

Номер ответа: 6
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #6 Добавлено: 04.07.11 14:14
Чё там пробовать ...
Это для vbnet
  1. Declare Function OpenPort Lib "LibThread.dll" (ByVal NCom As Integer, ByVal hw As IntPtr) As Integer


Это для vb6
  1. Declare Function OpenPort Lib "LibThread.dll" Alias "_OpenPort" (ByVal NCom As long, ByVal hw As Long) As Long

А это правильное соглашение о вызове с++
DLL_EI int __stdcall OpenPort(int NCom, HWND hw);

Ответить

Номер ответа: 7
Автор ответа:
 andrey



ICQ: 305986093 

Вопросов: 3
Ответов: 41
 Профиль | | #7 Добавлено: 04.07.11 14:27
Да я полазив по форумам тоже к такому выводу пришел. Спасибо еще раз, буду побывать, что получится отпишусь.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам