Solved

Cant Find Entry point to DLL ?

Posted on 1997-06-11
13
432 Views
Last Modified: 2013-11-08
The error 'Cant find entry point to xxxxx.dll ' comes up when I run my VB program. the file xxxxx.dll is created from Fortran Power Station - in fact I am just trying to get the example they give for using Fortran DLL's in VB to work. Any Ideas ?
0
Comment
Question by:sl311
  • 5
  • 4
  • 3
  • +1
13 Comments
 
LVL 5

Expert Comment

by:y96andha
ID: 1427106
Check the exported names table of the DLL by right-clicking it in the explorer and selecting quickview. Make sure that the function that you have created is listed there.
0
 
LVL 4

Expert Comment

by:Chizl
ID: 1427107
Your calling a 16 bit call with a 32 bit machine..  ExitWindows for example is no longer in Win95 and will give you this error.  The new function is ExitWindowsEx with the same params..
0
 

Author Comment

by:sl311
ID: 1427108
Fortran Power Station is only 32 bit and the example I am doing is as follows :

In Fortran :

SUBROUTINE ARRAYTEST(arr)
   !MS$ATTRIBUTES DLLEXPORT :: ARRAYTEST
   REAL(4)  arr(3, 7)
   INTEGER i, j
   DO i = 1, 3
      DO j = 1, 7
         arr (i, j) = 11.0 * i + j
      END DO
   END DO
END SUBROUTINE

This compiles fine to a .dll and a .lib file which I then call from VB as follows :

VB Module :

Declare Sub ARRAYTEST Lib "c:\mark\dlltest" (Myarray As Single)

Then I call it from a subroutine :

Static arr(1 To 3, 1 To 7) As Single
Call ARRAYTEST(arr(1, 1))

When I dont get the path right it says cannot find dll, but as I no longer get that message I assume it is finding the dll. The error then is 'Cant find dll entry point ARRAYTEST in C:\path\dlltest.dll"

As fortran is 32 bit it cant be that it is calling a 16 bit dll so what can I do to make this work. Is it something to do with DLLMAIN or my dll linking options ?
0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
LVL 5

Expert Comment

by:y96andha
ID: 1427109
This is when you should do what I suggested, to verify that it is really exported as ARRAYTEST. Sometimes functions get a suffix or prefix when exported.
0
 

Author Comment

by:sl311
ID: 1427110
I right clicked it in Explorer and used quickview but could not see an 'Exported names table' or even the word arraytest with or without prefixes or suffixes.
0
 
LVL 5

Expert Comment

by:y96andha
ID: 1427111
What did appear when you quickviewed it? The exact header of the section I'm interested in is "Export table". If you would like, you could e-mail your DLL to andreas.hansson@mbox303.swipnet.se, and I could try to see if I can work anything out.
0
 

Author Comment

by:sl311
ID: 1427112
Adjusted points to 200
0
 
LVL 4

Accepted Solution

by:
Chizl earned 230 total points
ID: 1427113
In stead of :
Declare Sub ARRAYTEST Lib "c:\mark\dlltest" _
      (Myarray As Single)
Try:
Declare Function ARRAYTEST Lib "c:\mark\dlltest.dll" _
      (Myarray As Single)

I also have a VB4 (16bit) and a VC1.52 (DLL) example on my site if you want to check it out.  Arrays are not really a good thing for VB.  That is straight from the MS mouth.  Strings and Integers are the best and they told me that Strings really were not that great, but I had no problems with them..

L8r,
Chizl
0
 
LVL 4

Expert Comment

by:Chizl
ID: 1427114
I tried removing the .dll extension but I still go the 'can't find entry point' error message. Surely most people would not be content with just passing integers to and from dll's. Is there no way arrays can be passed without writing to a data file, then shelling to the fortran executable which reads the data file. - Slow and cumbersome.
0
 

Author Comment

by:sl311
ID: 1427115
I know I am comming in on the tail end here but I do have a thought.
Since you are using 32 bit, the function or sub names are
case aware.
If the DLL exports the function as ArrayTest and you call it
ARRAYTEST, this WILL NOT work.
If the case is not correct, you will get the error that you are getting.
0
 
LVL 6

Expert Comment

by:BenClark
ID: 1427116
A lot has happened since I posted the last comment..   Ben your right and should be given the points if that's the problem..   Also if your trying to pass in an Array as single I dont believe this will work either..  The thing your looking for is "Array as Variant"..  This is the 32 bit thing is now well know as the way to pass VB arrays..  I use VC5 as the backend to pass my VB arrays into and it catches the VB arrays with SafeArrays..  I don't know about Fortran and don't know if Fortran even has SafeArrays, but you might want to look into it..

L8r,
Chizl
chizl@karland.com
http://www.karland.com/
0
 
LVL 4

Expert Comment

by:Chizl
ID: 1427117
Thanks guys - it was the case sensitive issue that I got wrong - schoolboy error on my part I'm afraid.
0
 

Author Comment

by:sl311
ID: 1427118
That should of been Ben's points..  Sorry Ben!
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question