-
May 23rd, 2002, 05:00 AM
#1
Calling Dll function from VB
Hi All,
I have created a simple DLL with Win32 Application Extension Wizard. I have a a couple of function that are to called from a VB project. Thus I have set the calling convension to __stdcall in the Project Settings. In VB I have used the following syntax:
Code:
Private Declare Function fTest Lib "<Path of Dll>" Alias "fnTest" () as Long
Private Sub Command1_Click()
Dim r as Long
r = fTest()
End Sub
I am receving a error message saying
Code:
Error: 453 Can't Find Dll Entry Point for fnTest
I have also observed that it is DllMain call is successfull.
Please let me know what is problem in the code. The code is below:
Header File:
Code:
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
// This class is exported from the test.dll
#if defined(__cplusplus)
extern "C"{
#endif
TEST_API int fnTest(void);
#if defined(__cplusplus)
}
#endif
Implementation File:
Code:
#include "stdafx.h"
#include "test.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
MessageBox(NULL, "From Dll Main", "From Test Dll", MB_ICONASTERISK);
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
// This is an example of an exported function.
TEST_API int fnTest(void)
{
MessageBox(NULL, "Success!! Test Message", "From Test Dll", MB_ICONASTERISK);
return 42;
}
Thanks In Advance
regards
rcs
-
May 23rd, 2002, 05:18 AM
#2
hi...,
If Win32 application is not your requirement.then I can help you for the above purpose by creating DLL with ATL COM and using it's functions in VB.
if that helps you then please let me know.
Regards,
Vimal Naik
-
May 23rd, 2002, 05:31 AM
#3
Thanks vimal naik but I do not want to use ATL COM components, because, the Dll will be used in a Programming Tool called MapBasic, which has the syntax similar to VB. One cannot use COM Components from MapBasic.
So Win32 application is my requirement.
Thanks In advance
regards
rcs
-
May 23rd, 2002, 06:12 AM
#4
I think you should use the DEF-file and specify your function there.
Code:
EXPORTS
DllMain @1 PRIVATE
fnTest @2 PRIVATE
Otherwise you must use something like "fnTest@8" or "_fnTest@8" or "_fnTest". I do not know precisely.
Last edited by Vi2; May 23rd, 2002 at 06:15 AM.
With best wishes,
Vita
-----------------------
Russian Software Development Network -- http://www.rsdn.ru
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|