![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.11.2015
Сообщений: 6
|
![]()
Доброго всем дня. Подскажите пожалуйста:
есть сторонняя DLL необходимо воспользоваться её функциями, есть хелп, но написан он явно не для vb net, подскажите как правильно написать для vb? в хелпе так: long theirlibrary (double* _mode, int geometry, int tubesType, int finSpace) theirlibrary- функция в dll с которой нужно разобраться так или нет: Public Declare Function myfunc Lib "c:/library" Alias "theirlibrary " (ByVal mode As double, ByVal geometry As Integer, ByVal tubesType As Integer, ByVal finSpace As Integer) Всё непонятно но особенно * - при объявлении, читал что это вроде адрес переменной, а не её значение, как это написать на vb подскажите пожалуйста. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.11.2015
Сообщений: 6
|
![]()
Теперь вот такая штука, (но правда с горем пополам работает)
A call to PInvoke function 'WindowsApplication5!WindowsApplica tion1.Example::theirlibrary' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature. Помогите по русски понять пожалуйста |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Ну написано ж что указанные параметры и т.п. функции в .NET программе скорее всего не соответствуют тому, что на самом деле.
Код-то покажите.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 08.11.2015
Сообщений: 6
|
![]()
так написано в хелпе
long функция(int mode, int geometry, int tubesType, int finSpacе..... <DllImport("эта.dll", EntryPoint:="функция", CallingConvention:=CallingConventio n.Cdecl, CharSet:=CharSet.Ansi)> _ Public Function функция(ByVal mode As Integer, _ ByVal geometry As Integer, _ ByVal tubesType As Integer, _ ByVal finSpacе As Integer, _.....) as long и она чегото считает но не то |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Не видите никакого несоответствия между "Integer" и "double*"?
Скорее всего надо либо double[] (в смысле массив double, может быть в VB.NET не такой синтаксис для них как в C#), либо IntPtr (просто указатель).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 08.11.2015
Сообщений: 6
|
![]()
Спасибо за совет, но чёта я не пойму
все переменные я боле-мене объявил int-ineger, double-double... сейчас эксперименты с ByVal и ByRef массивы в хелпе обозначены правда для другой функции а здесь ещё эти double* и char** есть правда и просто double скажите int в C# тоже что integer для VB |
![]() |
![]() |
![]() |
#8 |
Регистрация: 08.11.2015
Сообщений: 6
|
![]()
Да и ещё это как IntPtr (просто указатель)
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
IntPtr это указатель, вроде его можно использовать там, где в C/C++ dll были любые указатели (double*, int*, SomeType*, ...).
https://www.google.com/search?q=intptr+dllimport Но тут наверно массив double нужен, а не это. Или что функция делает вообще? _mode для чего используется?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#10 |
Регистрация: 08.11.2015
Сообщений: 6
|
![]()
mode переменная которая будет браться из базы. значения 1,2,3,4 тип оборудования.
какой должен быть результат у функции (long) я не знаю, но явно не такой, что она не работает я понял из того, что она реагирует только на изменение mode, а переменных штук 50. Массивы в хелпе подписаны array. Вот * это что значит для типа переменной. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли создать библиотеку импорта для сторонней DLL? | taras-proger | Win Api | 16 | 14.09.2015 12:39 |
Подключение сторонней библиотеки | pupsus | Visual C++ | 2 | 03.05.2015 10:17 |
подключение dll | Voipp | C# (си шарп) | 2 | 08.07.2013 17:23 |
Управление устройством: проблемы с типами данных в сторонней DLL | AnTe | Общие вопросы Delphi | 13 | 19.06.2013 13:55 |
Получение данных из сторонней dll | Memfis1992 | Общие вопросы Delphi | 4 | 21.10.2010 09:19 |