Jump to content

Problems with my application and DLL


Recommended Posts

Hello Everybody,

I´m sorry by my English.

I´m new in LabVIEW and I would like to make a Stand-alone application. I have an application which is doing call to functions of the .dll. I tested it other times but suddenly the problem appears when I uninstall visual studio 2008. I enclose a image with my problem. The translation is: It´s imposible to start the application because your setting is wrong. Reinstalling the application may resolve the problem.

Why does it happen? Can anybody help to resolve the problem??

Thank you!!

Regards

Link to comment

That's one of those really useful Windows error messages! My guess is that your dll is linked to the debug versions of some DLL - likely something like the msvcrtd.dll (the Microsoft C++ Runtime Library (debug version)) which gets loaded with VS but not with a standard Windows install - Windows will install the msvcrt.dll (doesn't include any debug info) but not the debug version. So, if your dll was built with the dynamic calls (http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx) into the debug library and the VS uninstall removed them, it won't run and you get the helpful error message. If possible, build your DLL with the /MD compiler option instead of the /MDd and this problem may be solved. If you can't recompile the dll (maybe it's not one you wrote) then use Dependency Walker

http://www.dependencywalker.com/

to find which dll is missing that your dll is trying to call and find a copy of that dll and copy it to wherever your dll is looking for it.

Mark

Link to comment

Hi,

I found the file which was missing, but I don´t Know what I´m doing wrong, since I´m receiving the same error message.

I have included the file in my stand-alone application as you can see in the enclosed image. Then I installed the application. I also copied the files in the folder where they the application is supposed to look for. This resulted in the same error-message.

Do you need all the steps I followed in order to compile the application?

Thank u in advance

Link to comment

OK, now this is getting complicated - probably beyond my ability to help! I assume that when you looked at the dependencies of the DLL in question, it pointed to the folder in your \WINDOWS\SxS directory (that's the Windows Side-by-side directory). I'm not very familiar with that but a little quick reading indicates that it's a place that COM DLLs can live "side-by-side". Evidently, XP and Vista can use "Registration-Free COM" activation and when this happens COM DLLs get installed in the SxS directory, along with a manifest and a "security catalog". This means that the COM object doesn't get entered into the system registry - rather, at run time the calling application (the EXE) now must reference a manifest file (typically in the calling EXE's directory, as far as I can tell) that contains information about how to load files from the SxS directory. Since you had a system that worked when VS 2008 was installed, the manifest information must have been somewhere in the 2008 hierarchy or if you built the dlls yourself they were likely created when the dll was compiled and linked - if possible, go back to your VS2008 development machine and see if you have any *.manifest files created when you created the dlls. Without the manifest files, your dll can't link to the ms runtime library dlls because they aren't registered in the system registry and there's no information about which SxS files should get loaded. Please note that all of this is pure speculation ;)

Here are some links that provide more (a lot more) information

http://msdn.microsoft.com/en-us/library/ms973913.aspx

http://msdn.microsoft.com/en-us/magazine/cc188708.aspx

Maybe someone here really understands this stuff and can help.

Mark

Link to comment
  • 2 weeks later...

QUOTE (mesmith @ Nov 11 2008, 02:43 PM)

OK, now this is getting complicated - probably beyond my ability to help! I assume that when you looked at the dependencies of the DLL in question, it pointed to the folder in your \WINDOWS\SxS directory (that's the Windows Side-by-side directory). I'm not very familiar with that but a little quick reading indicates that it's a place that COM DLLs can live "side-by-side". Evidently, XP and Vista can use "Registration-Free COM" activation and when this happens COM DLLs get installed in the SxS directory, along with a manifest and a "security catalog". This means that the COM object doesn't get entered into the system registry - rather, at run time the calling application (the EXE) now must reference a manifest file (typically in the calling EXE's directory, as far as I can tell) that contains information about how to load files from the SxS directory. Since you had a system that worked when VS 2008 was installed, the manifest information must have been somewhere in the 2008 hierarchy or if you built the dlls yourself they were likely created when the dll was compiled and linked - if possible, go back to your VS2008 development machine and see if you have any *.manifest files created when you created the dlls. Without the manifest files, your dll can't link to the ms runtime library dlls because they aren't registered in the system registry and there's no information about which SxS files should get loaded. Please note that all of this is pure speculation ;)

Here are some links that provide more (a lot more) information

http://msdn.microsoft.com/en-us/library/ms973913.aspx

http://msdn.microsoft.com/en-us/magazine/cc188708.aspx

Maybe someone here really understands this stuff and can help.

Mark

Additionally there is the possibility that msvcrtd.dll or one of its versioned siblings msvcrXXd.dll relies on yet other DLLs that are in debug versions and get installed with MSVC only.

Rolf Kalbermatter

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.