Функция DLL Export C / C ++ 6.00, вызываемая VB6 - PullRequest
0 голосов
/ 17 июня 2010

Я пытался создать DLL с C / C ++, к которой VB6 мог бы получить доступ, и это правильно. Я получаю ошибку "453 Не удается найти точку входа DLL myFunctionName в myDllName.dll" при вызове функции из VB6. приложение. После поиска в Интернете, в том числе на этом сайте, я вижу, что я не одинок, и я пробовал различные опубликованные решения, но ошибка «453» не устранена. Это не COMM dll, и я считаю, что это возможно при создании через C / C ++. В любом случае, пожалуйста, помогите, если можете. Пожалуйста, обратитесь к следующему простому контрольному примеру ниже:

DLL, созданная как C / C ++ 6.00 Win32 Dynamic-Link Library:

#include <Windows.h>   

// Note that I did try the line below rather than the def file, but to no avail...  
// #pragma comment(linker, "/EXPORT:ibask32=_ibask32@0")

// Function definition   
extern "C" int __declspec(dllexport) __stdcall ibask32()   
{   
    MessageBox(NULL,"String","Sample Code", NULL);   
    return 0L;   
}   

Файл определения:

LIBRARY "Gpib-32"
EXPORTS   
ibask32

Теперь для приложения VB:

Ниже приведено все содержимое запуска Form1, Form_Load

Option Explicit
 Private Sub Form_Load()
  Call ibask
 End Sub

Ниже приведен файл модуля BAS, добавляемый в проект:

Option Explicit

Declare Function ibask32 Lib "Gpib-32.dll" Alias "ibask" () As Long

Sub ibask()

    Call ibask32   ' Note: This is the point of failure

End Sub

Заранее благодарим, если удачное решение может быть предоставлено, Том

1 Ответ

1 голос
/ 17 июня 2010

Вы делаете все правильно, насколько я могу судить.Проверьте свои предположения, запустив Dumpbin.exe / exports в DLL.Это показывает фактическое имя экспортируемой функции, оно должно совпадать с псевдонимом в объявлении VB6.

Единственный другой режим сбоя, о котором я могу подумать, это загрузка VB6 неправильной DLL.Он должен присутствовать в каталоге, указанном в PATH, если вы хотите использовать его из IDE VB6.Проверьте, запустив в командной строке «where gpib-32.dll».

...