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 9 1935
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 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
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
<ye***@yahoo.com> wrote in message
news:11**********************@u72g2000cwu.googlegr oups.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:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT"
version="8.0.50727.42" processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</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
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.manifest
/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.com> wrote in message news:11**********************@u72g2000cwu.googlegr oups.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:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.42" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </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
copy files from %VS80COMNTOOLS%\..\..\vc\redist\x86\ to the same directory
as your DLL may fix your problem.
<ye***@yahoo.com> wrote in message
news:11*********************@f14g2000cwb.googlegro ups.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.manifest /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.com> wrote in message news:11**********************@u72g2000cwu.googlegr oups.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:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.42" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </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 www.fruitfruit.com wrote: copy files from %VS80COMNTOOLS%\..\..\vc\redist\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 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.manifest /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
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.manifest /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 This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
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...
|
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...
|
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...
|
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...
|
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...
|
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...
|
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...
|
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...
|
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...
|
by: lllomh |
last post by:
Define the method first
this.state = {
buttonBackgroundColor: 'green',
isBlinking: false, // A new status is added to identify whether the button is blinking or not
}
autoStart=()=>{
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 4 Oct 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM)
The start time is equivalent to 19:00 (7PM) in Central...
|
by: Aliciasmith |
last post by:
In an age dominated by smartphones, having a mobile app for your business is no longer an option; it's a necessity. Whether you're a startup or an established enterprise, finding the right mobile app...
|
by: giovanniandrean |
last post by:
The energy model is structured as follows and uses excel sheets to give input data:
1-Utility.py contains all the functions needed to calculate the variables and other minor things (mentions...
|
by: NeoPa |
last post by:
Hello everyone.
I find myself stuck trying to find the VBA way to get Access to create a PDF of the currently-selected (and open) object (Form or Report).
I know it can be done by selecting :...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 1 Nov 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM)
Please note that the UK and Europe revert to winter time on...
|
by: NeoPa |
last post by:
Introduction
For this article I'll be focusing on the Report (clsReport) class. This simply handles making the calling Form invisible until all of the Reports opened by it have been closed, when it...
|
by: isladogs |
last post by:
The next online meeting of the Access Europe User Group will be on Wednesday 6 Dec 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, Mike...
|
by: SueHopson |
last post by:
Hi All,
I'm trying to create a single code (run off a button that calls the Private Sub) for our parts list report that will allow the user to filter by either/both PartVendor and PartType. On...
| |