VS.NET 2003 .DLL used in Excel - works on my machine, no one else's

Y

Yacobs

Hello,

I've got a DLL project that I'm compiling using VS.NET 2003. Then I
call functions from it in some VBA code in an Excel spreadsheet. It
works perfectly fine on my computer but as soon as I put the
spreadsheet and DLL file on another person's computer, Excel complains
"Cannot find <the dll>." The DLL is written in C++ but it uses some C#
type stuff like "using" namespaces, etc.

I've searched and found many topics on this that are somewhat similar
but no one seems to give an answer that actually works for me.

I had a somewhat similar issue where I created an .XLL file for Excel
which worked on my computer and wouldnt work on someone else's. I
ended up solving that issue by compiling the project in VS 6 instead
of .NET... however, that is not an option this time since my DLL
references a library that must be compiled in .NET.

It's almost as if there's some DLL file or something that my DLL file
relies on and which only exists on my computer (or computers with .NET
installed?). But I have no way to find this necessary DLL or verify if
this is even the problem.

I tried "regsvr" but it fails saying "LoadLibrary("<the dll>") failed.
Cannot find the specified module."

I tried compiling with "no entry point" as per Microsoft's bug with
managed extensions, but then the DLL fails to work even on my own
computer.

Does anyone have any idea what to do? This is quite urgent and I'd
really appreciate anyone's help.

Thanks so much,
Andrew
 
Y

Yacobs

Thanks for your reply. Unfortunately, they do have the .NET framework
installed and it still doesn't work. In fact, they have VS.NET 2003
installed too.

Jake Marx said:
Hi Andrew,

If you're going to use a .NET DLL on client machines, they must all have the
.NET framework installed:

http://www.microsoft.com/downloads/...e3-f589-4842-8157-034d1e7cf3a3&displaylang=en

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

Hello,

I've got a DLL project that I'm compiling using VS.NET 2003. Then I
call functions from it in some VBA code in an Excel spreadsheet. It
works perfectly fine on my computer but as soon as I put the
spreadsheet and DLL file on another person's computer, Excel complains
"Cannot find <the dll>." The DLL is written in C++ but it uses some C#
type stuff like "using" namespaces, etc.

I've searched and found many topics on this that are somewhat similar
but no one seems to give an answer that actually works for me.

I had a somewhat similar issue where I created an .XLL file for Excel
which worked on my computer and wouldnt work on someone else's. I
ended up solving that issue by compiling the project in VS 6 instead
of .NET... however, that is not an option this time since my DLL
references a library that must be compiled in .NET.

It's almost as if there's some DLL file or something that my DLL file
relies on and which only exists on my computer (or computers with .NET
installed?). But I have no way to find this necessary DLL or verify if
this is even the problem.

I tried "regsvr" but it fails saying "LoadLibrary("<the dll>") failed.
Cannot find the specified module."

I tried compiling with "no entry point" as per Microsoft's bug with
managed extensions, but then the DLL fails to work even on my own
computer.

Does anyone have any idea what to do? This is quite urgent and I'd
really appreciate anyone's help.

Thanks so much,
Andrew
 
J

Jens Thiel

Hi Andrew,

as the .NET framework is installed on the other computers, I guess that you
might link dynamically against MSVC run-time library. Locate DEPENDS.EXE
(usually in VS2003\Common7\Tools\Bin) and use it to open your DLL or XLL. It
will show you the DLLs your own DLL is depending on. Repeat this on the
"other" computer if you can not figure out which one is missing.

To link the run-time statically, you must change your project configuration.
Go to "C/C++" -> "Code Genaration" -> "Runtime Library" and change it to
something without "DLL" in the name.

Hope this helps,

Jens.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top