473,756 Members | 3,663 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Can we use dlls build with VS2005 with old apps?

Hi,

We have a product with bunch of dlls which are now built with Visual
Studio 2003. We want to switch the build to use VS2005. I have read
that in VS2005 runtime libraries come as side-by-side assemblies and
that application has to have a manifest binding it to those assemblies.

My question is, can previously built apps use my new dlls build with
vs2005? It would be really important to make it work, because
otherwise we would have to ask all our customers to rebuild their apps
with vs2005. For now, when i try to build a sample application with
vs2003 and link it with dlls build with vs2005, the build is successful
but at runtime i get an error "could not find msvcr80.dll".

Also when i try to run odbc datasource manager which loads one of our
dlls, i get "system error 126", which is i guess the same as previous
one.

So, is there any way to make existing executables work with vs2005 dlls
without having to rebuild the executables? Using "mt" tool to put a
manifest in all our customers apps would not be a very good option.

Thanks a lot,
Yev

Jun 13 '06 #1
9 1985
Hi,
I also tried to run a java program, which loads our driver dll (now
build with vs2005)
and i m getting the same error. How would java app recognize vs2005
dlls? Do we need to use those manifests with java programs?

Thanks
Yev

ye***@yahoo.com wrote:
Hi,

We have a product with bunch of dlls which are now built with Visual
Studio 2003. We want to switch the build to use VS2005. I have read
that in VS2005 runtime libraries come as side-by-side assemblies and
that application has to have a manifest binding it to those assemblies.

My question is, can previously built apps use my new dlls build with
vs2005? It would be really important to make it work, because
otherwise we would have to ask all our customers to rebuild their apps
with vs2005. For now, when i try to build a sample application with
vs2003 and link it with dlls build with vs2005, the build is successful
but at runtime i get an error "could not find msvcr80.dll".

Also when i try to run odbc datasource manager which loads one of our
dlls, i get "system error 126", which is i guess the same as previous
one.

So, is there any way to make existing executables work with vs2005 dlls
without having to rebuild the executables? Using "mt" tool to put a
manifest in all our customers apps would not be a very good option.

Thanks a lot,
Yev


Jun 13 '06 #2
ye***@yahoo.com wrote:
My question is, can previously built apps use my new dlls build with
vs2005?
What kind of interface do your DLLs expose? If it's plain C API, or
COM-based interface, chances are high they would work. If you are
exporting C++ classes from DLL, your chances are slim to none.
It would be really important to make it work, because
otherwise we would have to ask all our customers to rebuild their apps
with vs2005. For now, when i try to build a sample application with
vs2003 and link it with dlls build with vs2005, the build is
successful but at runtime i get an error "could not find msvcr80.dll".


The easiest way around that is probably to link your DLLs against static
CRT: Project | Properties | C/C++ | Code Generation | Runtime Library =
Multithreaded (or Multithreaded Debug, when doing debug build).
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925
Jun 13 '06 #3
Hi, thanks for the reply.

Some dlls export C API, and others export C++. But i would think if
there was a problem with C++ name decoration, i would get a different
kind of error, like "symbol not found".

I guess linking dlls with runtime statically would probably solve the
problem, but it would also make the footprint much bigger since all
runtime library code would have to be contained in each dll.

Any other way to do it?
Also, seems like java apps cannot use vs2005 dlls?

Thanks a lot
Yev

Igor Tandetnik wrote:
ye***@yahoo.com wrote:
My question is, can previously built apps use my new dlls build with
vs2005?


What kind of interface do your DLLs expose? If it's plain C API, or
COM-based interface, chances are high they would work. If you are
exporting C++ classes from DLL, your chances are slim to none.
It would be really important to make it work, because
otherwise we would have to ask all our customers to rebuild their apps
with vs2005. For now, when i try to build a sample application with
vs2003 and link it with dlls build with vs2005, the build is
successful but at runtime i get an error "could not find msvcr80.dll".


The easiest way around that is probably to link your DLLs against static
CRT: Project | Properties | C/C++ | Code Generation | Runtime Library =
Multithreaded (or Multithreaded Debug, when doing debug build).
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925


Jun 13 '06 #4
<ye***@yahoo.co m> wrote in message
news:11******** **************@ u72g2000cwu.goo glegroups.com
Some dlls export C API, and others export C++. But i would think if
there was a problem with C++ name decoration, i would get a different
kind of error, like "symbol not found".
You just don't get that far. Once you overcome the CRT DLL hurdle,
you'll be hit by this problem.
I guess linking dlls with runtime statically would probably solve the
problem, but it would also make the footprint much bigger since all
runtime library code would have to be contained in each dll.

Any other way to do it?
Does your DLL have a manifest bound to it as a resource (to check, open
the DLL with resource editor)? It should look something like this:

<assembly xmlns="urn:sche mas-microsoft-com:asm.v1"
manifestVersion ="1.0">
<dependency>
<dependentAssem bly>
<assemblyIdenti ty type="win32" name="Microsoft .VC80.CRT"
version="8.0.50 727.42" processorArchit ecture="x86"
publicKeyToken= "1fc8b3b9a1e18e 3b"></assemblyIdentit y>
</dependentAssemb ly>
</dependency>
</assembly>

My understanding is that, with the correct manifest, it should just
work. But I really know very little on the subject. Hopefully, somebody
more knowlegeable will chime in at this point.
Also, seems like java apps cannot use vs2005 dlls?


I don't think Java apps particularly care about your build tool, as long
as the DLL exports all the right functions. It's probably the same
problem with msvcr80.dll
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925
Jun 13 '06 #5
Hi,
I found out that my dlls didnt contain manifest embedded in them, but
instead had .manifest files in the same directory. I embeded those
manifests into the dlls by running mt.exe /manifest file.dll.manife st
/outputresource: file.dll.
Unfortunately it still doesn't fix the problem. One thing i saw is
that .manifest files specify different version of runtime libraries
from the one installed in WinSxS folder. I tried to edit manifest
files to include the installed version instead, but it still doesn't
help. Would different versions cause problems? Anything else i might
be doing wrong?

Thanks
Yev

Igor Tandetnik wrote:
<ye***@yahoo.co m> wrote in message
news:11******** **************@ u72g2000cwu.goo glegroups.com
Some dlls export C API, and others export C++. But i would think if
there was a problem with C++ name decoration, i would get a different
kind of error, like "symbol not found".


You just don't get that far. Once you overcome the CRT DLL hurdle,
you'll be hit by this problem.
I guess linking dlls with runtime statically would probably solve the
problem, but it would also make the footprint much bigger since all
runtime library code would have to be contained in each dll.

Any other way to do it?


Does your DLL have a manifest bound to it as a resource (to check, open
the DLL with resource editor)? It should look something like this:

<assembly xmlns="urn:sche mas-microsoft-com:asm.v1"
manifestVersion ="1.0">
<dependency>
<dependentAssem bly>
<assemblyIdenti ty type="win32" name="Microsoft .VC80.CRT"
version="8.0.50 727.42" processorArchit ecture="x86"
publicKeyToken= "1fc8b3b9a1e18e 3b"></assemblyIdentit y>
</dependentAssemb ly>
</dependency>
</assembly>

My understanding is that, with the correct manifest, it should just
work. But I really know very little on the subject. Hopefully, somebody
more knowlegeable will chime in at this point.
Also, seems like java apps cannot use vs2005 dlls?


I don't think Java apps particularly care about your build tool, as long
as the DLL exports all the right functions. It's probably the same
problem with msvcr80.dll
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925


Jun 14 '06 #6
copy files from %VS80COMNTOOLS% \..\..\vc\redis t\x86\ to the same directory
as your DLL may fix your problem.

<ye***@yahoo.co m> wrote in message
news:11******** *************@f 14g2000cwb.goog legroups.com...
Hi,
I found out that my dlls didnt contain manifest embedded in them, but
instead had .manifest files in the same directory. I embeded those
manifests into the dlls by running mt.exe /manifest file.dll.manife st
/outputresource: file.dll.
Unfortunately it still doesn't fix the problem. One thing i saw is
that .manifest files specify different version of runtime libraries
from the one installed in WinSxS folder. I tried to edit manifest
files to include the installed version instead, but it still doesn't
help. Would different versions cause problems? Anything else i might
be doing wrong?

Thanks
Yev

Igor Tandetnik wrote:
<ye***@yahoo.co m> wrote in message
news:11******** **************@ u72g2000cwu.goo glegroups.com
> Some dlls export C API, and others export C++. But i would think if
> there was a problem with C++ name decoration, i would get a different
> kind of error, like "symbol not found".


You just don't get that far. Once you overcome the CRT DLL hurdle,
you'll be hit by this problem.
> I guess linking dlls with runtime statically would probably solve the
> problem, but it would also make the footprint much bigger since all
> runtime library code would have to be contained in each dll.
>
> Any other way to do it?


Does your DLL have a manifest bound to it as a resource (to check, open
the DLL with resource editor)? It should look something like this:

<assembly xmlns="urn:sche mas-microsoft-com:asm.v1"
manifestVersion ="1.0">
<dependency>
<dependentAssem bly>
<assemblyIdenti ty type="win32" name="Microsoft .VC80.CRT"
version="8.0.50 727.42" processorArchit ecture="x86"
publicKeyToken= "1fc8b3b9a1e18e 3b"></assemblyIdentit y>
</dependentAssemb ly>
</dependency>
</assembly>

My understanding is that, with the correct manifest, it should just
work. But I really know very little on the subject. Hopefully, somebody
more knowlegeable will chime in at this point.
> Also, seems like java apps cannot use vs2005 dlls?


I don't think Java apps particularly care about your build tool, as long
as the DLL exports all the right functions. It's probably the same
problem with msvcr80.dll
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925

Jun 14 '06 #7
www.fruitfruit.com wrote:
copy files from %VS80COMNTOOLS% \..\..\vc\redis t\x86\ to the same
directory as your DLL may fix your problem.


No, don't do that. For CRT DLLs to work side by side, the EXE has to have a
manifest, something the OP is trying to avoid.

-cd
Jun 14 '06 #8
ye***@yahoo.com wrote:
Hi,
I found out that my dlls didnt contain manifest embedded in them, but
instead had .manifest files in the same directory. I embeded those
manifests into the dlls by running mt.exe /manifest file.dll.manife st
/outputresource: file.dll.
Unfortunately it still doesn't fix the problem. One thing i saw is
that .manifest files specify different version of runtime libraries
from the one installed in WinSxS folder. I tried to edit manifest
files to include the installed version instead, but it still doesn't
help. Would different versions cause problems? Anything else i might
be doing wrong?


The "wrong" version in the manifest file is correct. There's a policy file
in the WinSxS directory that directs that version to the correct, finaly
verion of the DLLs.

You're probably embeddeing the manifest in the DLL with the wrong resource
ID. When embedded in an EXE, the manifest must have resource ID 1, but when
embedded in a DLL the ID must be 2.

See this thread for details:

http://groups.google.com/group/micro...e19aa831?hl=en

-cd
Jun 14 '06 #9
After using resource id 2 it works.

Thanks a lot,
Yev

Carl Daniel [VC++ MVP] wrote:
ye***@yahoo.com wrote:
Hi,
I found out that my dlls didnt contain manifest embedded in them, but
instead had .manifest files in the same directory. I embeded those
manifests into the dlls by running mt.exe /manifest file.dll.manife st
/outputresource: file.dll.
Unfortunately it still doesn't fix the problem. One thing i saw is
that .manifest files specify different version of runtime libraries
from the one installed in WinSxS folder. I tried to edit manifest
files to include the installed version instead, but it still doesn't
help. Would different versions cause problems? Anything else i might
be doing wrong?


The "wrong" version in the manifest file is correct. There's a policy file
in the WinSxS directory that directs that version to the correct, finaly
verion of the DLLs.

You're probably embeddeing the manifest in the DLL with the wrong resource
ID. When embedded in an EXE, the manifest must have resource ID 1, but when
embedded in a DLL the ID must be 2.

See this thread for details:

http://groups.google.com/group/micro...e19aa831?hl=en

-cd


Jun 15 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
1297
by: Lucas Graf | last post by:
I am trying to get the deployment to do what I want, but I just can't. I want my folders to be setup like below.. Main Program Folder - Program EXE - Program PDB - AppStart EXE - AppStart PDB - Program and AppSTart .config files
1
1362
by: Ramanujam R | last post by:
I'm trying to move a portion of our application to .NET from VC6 - the idea was to let most of the older DLLs still be compiled with VC6. As a first step just opened the project with VC7, and leaving everything unmanaged, just tried to get a build. After fixing some compile problems, we ran into problems linking with DLLs that were MFC dependent. (something to do with CString-s that are templates
10
2053
by: vwd2005eeb | last post by:
Visual Web Developer 2005 Express Edition Beta I did Build | Build Web site, where are the DLLs? I was expecting to see maybe one dll for each Web page in a directory (maybe still "bin") under Inetpub/wwwroot/mywebsite/ Thanks.
7
3109
by: Oenone | last post by:
I'm sure there's an obvious way to do this, but I'm missing it so far. I have an ASP.NET application that relies on several DLLs to work. Currently in order to get my site working I have to put them all in the bin/ folder within my web site's directory. As I have numerous web sites, I want to be able to place all of these DLLs just once into a single location elsewhere on the disk (e.g., "D:\DLLs"). I don't want to put them into the...
2
1195
by: WebMatrix | last post by:
Hello, Just created my first ASP.NET 2.0 project with Visual Studio 2005. I see they changed some very important things. So, I have the follwoing questions: 1. How can I view and remove project references. I can add references from the project menu, but where is reference "folder" which used to be in VS 2003 from which I could add or remove references. 2. I see that there's no bin folder, project still compiles and runs, that's
5
1237
by: Ecke | last post by:
Hi, i have writte 3 projects, 1 application (.exe) and 2 DLLs. In the application i use the references to add the 2 DLLs to work with their namespaces and functionallity. But the application always copys the DLLs in its own diretory. I want to have my own structure e.g.:
2
1232
by: Rick | last post by:
I have VS2005 solution containing a console app project plus a lot of projects it depends on. When I compile the solution, only those dlls that are directly referenced are copied to the console app bin/debug output folder. Projects dlls that are indirectly referenced (i.e. are referenced only via directly referenced projects) are not copied. This is different from VS2003. How can I ensure that all required dlls are copied to the output...
6
2388
by: =?Utf-8?B?SHVnaA==?= | last post by:
Hi there We are trying to build a C sharp solution in Visual Studio 2005 Professional. We have a number of other assemblies, that do not form part of the solution. Assemblies that do form part of the solution have been referenced using the Projects tab in the Add Reference dialog. Assemblies that do not form part of the solution have been added usingthe
6
2431
by: =?Utf-8?B?anAybXNmdA==?= | last post by:
Using Visual Studio 2005, I have created 4 small DLLs that our company projects can use to access common tools included in each of the separate DLL files. Our Visual Studio 2005 applications call the DLLs and run them without any problem. Now we are trying to deploy the first of these applications, and we are now stumped. The Visual Studio 2005 Deployment Project includes all of the DLL files and successfully creates the setup.exe...
0
9456
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9273
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10032
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9711
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7244
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5141
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
3805
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3358
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2666
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.