LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

The application has failed to start because my1.dll was not found

I use labview8.5 on Windows Vista, my vi calls my0.dll by call library function node. My0.dll need call my1.dll. The error "The application has failed to start because  my1.dll was not found" occurs when I config the call libray function node. I don't know why because I have put  my0.dll and my1.dll under c:\windows\system32 directory. Also, my0.dll can be found when I load the vi, why it can't find my1.dll?
0 Kudos
Message 1 of 17
(3,763 Views)

You can register your dll using Regsvr32.exe.

You can also put the dll anywhere.  It does not need to be in the system32 folder.

I create an exe to register my dlls.  This exe is delivered as a support file with my application.  I then run the executable to register my dlls one time during installation.

0 Kudos
Message 2 of 17
(3,733 Views)
My dll hasn't dllRegisterServer function entry point. The entry point is dllmain function.
0 Kudos
Message 3 of 17
(3,718 Views)
Now, I doubt whether or not Labview8.5 support vista x64 OS?
Labview8.5 readme file says "not support vista 64". But I succeeded compiling a x64 dll using the header files provided by Labview 8.5 and I installed it on Vista x64 system successfully. 
0 Kudos
Message 4 of 17
(3,716 Views)
If you can post all of the code you have, it may help someone figure out your issue.  NI saying it doesn't support Vista 64 doesn't necessarily mean it won't work, they just don't claim it to work, which means if you call them for support, they won't help you.

Are the 2 dlls you made both LabVIEW dlls?
0 Kudos
Message 5 of 17
(3,712 Views)
my0.dll is called by Labview directly through the "call library function node". my0.dll uses APIs exported by my1.dll, my0.dll is compiled and linked with my1.lib. And I think Labview will load my0.dll and my1.dll when I load VI, they runs well at Windows 2000 and XP. 
0 Kudos
Message 6 of 17
(3,711 Views)
Have you tried putting both dlls in the same directory as the exe?

You will want to use 32bit dlls in Vista 64. 32 bit programs (which is true of LabVIEW 8.5 and early) can only call 32bit dlls (there is a method around that limitation but I'm not familiar with it), you can run most any 32bit program in Vista 64 unless it needs drivers (note: things like firewalls and virus checkers use drivers to access the system), and NI has 64bit compatible drivers (at least in the newest version of daqmx) that can be use by LabVIEW.


Message Edited by Matt W on 12-26-2007 06:15 AM
0 Kudos
Message 7 of 17
(3,695 Views)
First, thank you for all your help!
 
I put the two dlls to the directory of "c:\windows\system32\", error occurs "can not find mydll1.dll". But when I put them to another directory "e:\tmp\", no error.
Now, I don't know why I got error at the system32 directory?
 
Both of the dlls are 64bit. 
0 Kudos
Message 8 of 17
(3,687 Views)

Sorry, I have made a mistake in the above thread.

I error free dlls are 32bit which are put at directory "e:\tmp\". If I put them at "c:\windows\system32\", same error "can't find mydll1.dll" happens.

If I put the 64bit dlls at "e:\tmp\", and a different error message occurs "the file is not a valid library".

 

0 Kudos
Message 9 of 17
(3,686 Views)
Do you have a absolute path link to mydll1.dll in mydll0.dll?  If you take mydll0.dll out of e:\tmp and leave it in c:\windows\system32, does it work?
0 Kudos
Message 10 of 17
(3,681 Views)