Мы скомпилировали C++-программу как DLL и хотим использовать ее с VB6. Программа имеет подпрограммы, какC++ DLL-программа из VB6 не найдена
int __stdcall setup(int exposure_time, double shutter, double gain, int numImages) {
....
}
int __stdcall test() {
return 8;
}
И файл Def определяется как:
LIBRARY
EXPORTS
setup=setup
test=test
И мы объявляем их в VB6, как это:
Public Declare Function setup Lib "C:\MyDll.dll"() As Long
Public Declare Function test Lib "C:\MyDll.dll"() As Long
И пытается получить доступ, то в a. Форма:
Private Sub Form_Load()
Debug.Print (test())
End Sub
Но мы получаем «Файл не найден» в VB, когда исполнение достигает самого первого вызова функции! Программа MyDll.dll находится в объявленном месте и не регистрируется. Что не хватает для объявления?
Здравствуйте Вирсавия,
Я последовал за ваши предложения, но программа VB еще не может найти библиотеку DLL.
Объявления в VB:
Public Declare Function setup Lib "C:\Math\FlyCapture2\bin\PGLCTrigger.dll" (_
ByVal exposure_time As Long, _
ByVal shutter As Double, _
ByVal gain As Double, _
ByVal numImages As Long) As Long
Public Declare Function test Lib "C:\Math\FlyCapture2\bin\PGLCTrigger.dll"() As Long
Защиту файла:
LIBRARY
EXPORTS
[email protected]
[email protected]
программа C++:
__declspec(dllexport) int __stdcall setup(int exposure_time, double shutter, double gain, int numImages) {
....
}
__declspec(dllexport) int __stdcall test() {
return 8;
}
И программа VB вызова:
Private Sub Form_Load()
setup 12, 24#, 1#, 10
test
End Sub
Как только выполнение попадает в установочную строку в программе выше, появляется ошибка «dll not found».
Я определил следующее в .def файл, как предложено Compile a DLL in C/C++, then call it from another program:
//DLL Export-Import definitions
#ifdef BUILD_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif
Так что я могу ссылаться на функции в DLL, как
EXPORT int __stdcall setup(int exposure_time, double shutter, double gain, int numImages)
Но VS2010 выдает сообщение об ошибке для импорт.
Итак, я застрял. Любая дополнительная помощь будет оценена очень много. Спасибо.
Возможно, у нас есть точное сообщение об ошибке –
Здравствуйте, Дэвид, ошибка «Ошибка времени выполнения» 48 ', Файл не найден c: \ ... \ MyDll.dll, возвращенный с VB6, когда выполнение включено "setup 12,24,1,10 ". – user1046647