LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Entry Point Not Found

I am using LabWindows/CVI 8.1

I have a project I took over from a co-worker.

 

In the project there is a DLL called BTICard.dll along with BTICard.lib in a library folder.

There is also an include file called BTICard.H

 

When I click on debug project I am getting a popup error saying:

  Entry Point Not Found

    The procedure entry point _BTICard_CISWr@16 could not be located in the Dynamic link library BTICard.dll

 

When the person I took over the project from runs it, he gets no error on his PC.

 

Can anyone shed some light on this?

 

Thanks!

John W.

 

0 Kudos
Message 1 of 8
(5,565 Views)

Hi,

 

The error says the function BTICard_CISWr is missing in the dll. You can open your dll using depends.exe and find if the dll really contains the function. One more thing you may like to check could be the version of the dll. 

0 Kudos
Message 2 of 8
(5,550 Views)

Thanks for the response. I'm new at this so bear with me.

Looking in the BTICard.dll, there is no BTICard_CIwr@16 function.

But in the include file BTICard.h there is no reference to this function so I don't understand why it's flagging this error.

This is the only version of BTICard.dll we have.

The person who previously worked on this project gave me all the files for this project. On his computer it does not flag this error. Looking at his BTICard.dll, that also does not have the function BTICard_CISwr@16. so why is this error getting flagged for me.

 

Thanks!

John W.

 

 

0 Kudos
Message 3 of 8
(5,545 Views)

The missing function name can be BTICard_CISWr........(...).   I mean starting with "BTICard_CISWr". The error message is not fully descrbing the missing function. So Use depends.exe (downloadable from net) to find out the exact missing procedure (function). You will find a red line for the missing procedure. 

 

Typically this happens when you have multiple dependant dll and one of them is missing. Depends tool is teh best way to figure out these dependancy issues.

 

Hope this helps. 

0 Kudos
Message 4 of 8
(5,540 Views)

Thanks again for the response.

I did use depends.exe to view the BTICard.DLL. There is no function called BTICard_CIS...

I did a search thru the entire project for BTICard_CI* and got no hits.

 

Thanks
JW

 

0 Kudos
Message 5 of 8
(5,531 Views)

That looks strange to me. Could you please very if the BTICard.lib file is attached to your project? 

0 Kudos
Message 6 of 8
(5,517 Views)

Have you checked for multiple versions of the DLL present on the system?

 

The original developer's system might be finding a different version of the DLL that does have the entry point.  Or, there's a bad version of the DLL on your system that the OS is loading despite your building a "good" version.

 

It can be perverse trying to ensure the OS finds the specific DLL you want, since the DLL searchpath (the "LoadLibraryEx" function, essentially) varies by OS.  One way to be certain is to put the DLL in the same folder as the executable, as all of the search paths implemented by Microsoft include the executable folder as the first place to look.  I've been burned many times thinking I'm debugging the DLL I just built, only to find that the OS is loading and using an older version it's finding somewhere on the system.

 

I am in the habit of simply deleting every copy of a DLL I'm debugging to ensure the OS loads the version I've just built.  Using the versioning (DLLGetVersion) helps at runtime, but only if you implement the DLLGetVersion method in your DLL, which isn't necessary to make a DLL work but it helps you do a dynamic (i.e. runtime) check of the version.  At app startup I always call DLLGetVersion on the DLL's I've created so as to log the version used.  It can be a trick to implement the DLLGetVersion method the way Microsoft says but it can be done, I have code for this if you like.  If you do this, then you can increment the DLL's build number each time and differentiate your DLL from build to build.  CVI will autoincrement the build for you if you tell it to.

 

Also, if you have the DLL project in the same workspace as the application that's calling it, CVI won't automatically switch the DLL export library and the DLL from debug to release for you when you switch the executable.

from release to debug and visa versa (assuming you've done a debug and release version of the DLL).  This is another way to get fooled - you've built a debug version of the DLL but the app is still binding to an older, release version.

 

0 Kudos
Message 7 of 8
(5,499 Views)

I finally just decided to remove the NI software from my computer and re-installed the NI software.

After re-installing, the error no longer occurs.

 

Thanks

JW

 

0 Kudos
Message 8 of 8
(5,486 Views)