You are viewing a plain text version of this content. The canonical link for it is here.
Posted to api@openoffice.apache.org by "Shukla, Mangesh" <ma...@siemens.com> on 2013/01/25 14:14:45 UTC

Regarding MSVCR80.dll

Hi,
I am using OpenOffice3.4.1 sdk to build an external dll (it does not add any new types, and is based on the documentLoader example) , which interacts with OpenOffice. I could build the dll using Visual studio 2012 and use it as well. However since the dll is supposed to be cross platform, I moved the project to a Makefile. I have written a Makefile, which creates the .dll, and .lib. However when I use it in a test application, the application complains that the MSVCR80.dll is missing from the computer. I have the following set for the CPP compiler

OO_SDK_CPP_HOME=C:\apps\MVS8\VC\bin

Changing the CPP home to use the Visual studio 2012 compiler, causes compilation error.
I have all the versions from VS2005 to VS2012 installed on my PC.

I implemented a test application using VS2012 as well as VS2008, but both applications complain about the MSVCR80.dll

At the same time I am able to use the DLL built using the VS2012 project, and everything works fine

Please advise on what is the best way of compiling using the Makefile and using the dll. Let me know if you need anymore clarification.

Thanks
Mangesh


RE: Regarding MSVCR80.dll

Posted by "Shukla, Mangesh" <ma...@siemens.com>.
Hi Ariel,
     I have resolved the issue with MSVCR80.dll  with my project. Earlier the problem was that the vcvars32.bat script could not run successfully and complained about not able to locate the COMMON\Tools folder. For this I had to work on the environment settings and now there are no errors while setting the VS environment. However I noticed that I still can't build with VS2012. I will give the error below my mail. This is not so critical for me now that I could get this working with VS2010. Also It works on friends PC with VS2012. I could compile the external dll using a Makefile with VS2010. I could then use it in a VS2012 test project. As you said, I am still working with the sample code available on the net and can share it, so that it benefits new comers like me. Could you suggest any suitable forum where I can post the code sample.

Thanks everyone for the response and encouragement.

Regards,
Mangesh

NOTE: The error with VS2012 using makefile

     Creating library ../../../WINexample.out/bin/OOoCalc.lib and object ../../../WINexample.out/bin/OOoCalc.exp
OOoCalc.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl std::_Xbad_alloc(void)" (__imp_?_Xbad_alloc@std@@YAXXZ) referen
ced in function "char * __cdecl std::_Allocate<char>(unsigned int,char *)" (??$_Allocate@D@std@@YAPADIPAD@Z)
OOoCalc.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl std::_Xlength_error(char const *)" (__imp_?_Xlength_error@std@@
YAXPBD@Z) referenced in function "public: void __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Xlen(void)con
st " (?_Xlen@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEXXZ)
OOoCalc.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl std::_Xout_of_range(char const *)" (__imp_?_Xout_of_range@std@@
YAXPBD@Z) referenced in function "public: void __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Xran(void)con
st " (?_Xran@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEXXZ)
OOoCalc.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) char const * __cdecl std::_Syserror_map(int)" (__imp_?_Syserror_map@std@@YAP
BDH@Z) referenced in function "public: virtual class std::error_condition __thiscall std::_System_error_category::default_error_condition(int)const " (?def
ault_error_condition@_System_error_category@std@@UBE?AVerror_condition@2@H@Z)
OOoCalc.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) char const * __cdecl std::_Winerror_map(int)" (__imp_?_Winerror_map@std@@YAP
BDH@Z) referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::_Sys
tem_error_category::message(int)const " (?message@_System_error_category@std@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@H@Z)
../../../WINexample.out/bin/OOoCalc.dll : fatal error LNK1120: 5 unresolved externals
Reaping losing child 0090c298 PID 8040016
make: *** [../../../WINexample.out/bin/OOoCalc.dll] Error 1120
Removing child 0090c298 PID 8040016 from chain.


This does not occur with VS2010 and VS2008 C++ compiler.





-----Original Message-----
From: Ariel Constenla-Haile [mailto:arielch@apache.org] 
Sent: Thursday, January 31, 2013 9:51 PM
To: api@openoffice.apache.org
Subject: Re: Regarding MSVCR80.dll

On Fri, Jan 25, 2013 at 01:14:45PM +0000, Shukla, Mangesh wrote:
>    Hi,
>    I am using OpenOffice3.4.1 sdk to build an external dll (it does not add
>    any new types, and is based on the documentLoader example) , which
>    interacts with OpenOffice. I could build the dll using Visual studio 2012
>    and use it as well. However since the dll is supposed to be cross
>    platform, I moved the project to a Makefile. I have written a Makefile,
>    which creates the .dll, and .lib. However when I use it in a test
>    application, the application complains that the MSVCR80.dll is missing
>    from the computer. I have the following set for the CPP compiler
> 
>    OO_SDK_CPP_HOME=C:\apps\MVS8\VC\bin
> 
>     
> 
>    Changing the CPP home to use the Visual studio 2012 compiler, causes
>    compilation error.
> 
>    I have all the versions from VS2005 to VS2012 installed on my PC.
> 
>    I implemented a test application using VS2012 as well as VS2008, but both
>    applications complain about the MSVCR80.dll
> 
>    At the same time I am able to use the DLL built using the VS2012 project,
>    and everything works fine
> 
>    Please advise on what is the best way of compiling using the Makefile and
>    using the dll. Let me know if you need anymore clarification.

I only build with the VS2008 and it works fine. If you are distributing your binaries, you'll have to include the redistributable. And if you are planning to build your application for all supported platforms, I'd suggest you use the SDK build environment (it will save you a lot of time, the Cmake approach suggested on other mail will require that you create a Cmake module to find the OpenOffice/SDK installation).

As a general suggestion, don't start with an IDE project, simply try to get a working Makefile with the SDK environment and make sure it builds fine in all supported platforms. It would also be easier to provide advice if you can upload the source code somewhere (IIUC you are simply playing with an SDK example, so there would no problem in showing the code).


Regards
--
Ariel Constenla-Haile
La Plata, Argentina

Re: Regarding MSVCR80.dll

Posted by Ariel Constenla-Haile <ar...@apache.org>.
On Fri, Jan 25, 2013 at 01:14:45PM +0000, Shukla, Mangesh wrote:
>    Hi,
>    I am using OpenOffice3.4.1 sdk to build an external dll (it does not add
>    any new types, and is based on the documentLoader example) , which
>    interacts with OpenOffice. I could build the dll using Visual studio 2012
>    and use it as well. However since the dll is supposed to be cross
>    platform, I moved the project to a Makefile. I have written a Makefile,
>    which creates the .dll, and .lib. However when I use it in a test
>    application, the application complains that the MSVCR80.dll is missing
>    from the computer. I have the following set for the CPP compiler
> 
>    OO_SDK_CPP_HOME=C:\apps\MVS8\VC\bin
> 
>     
> 
>    Changing the CPP home to use the Visual studio 2012 compiler, causes
>    compilation error.
> 
>    I have all the versions from VS2005 to VS2012 installed on my PC.
> 
>    I implemented a test application using VS2012 as well as VS2008, but both
>    applications complain about the MSVCR80.dll
> 
>    At the same time I am able to use the DLL built using the VS2012 project,
>    and everything works fine
> 
>    Please advise on what is the best way of compiling using the Makefile and
>    using the dll. Let me know if you need anymore clarification.

I only build with the VS2008 and it works fine. If you are distributing
your binaries, you'll have to include the redistributable. And if you
are planning to build your application for all supported platforms, I'd
suggest you use the SDK build environment (it will save you a lot of
time, the Cmake approach suggested on other mail will require that you
create a Cmake module to find the OpenOffice/SDK installation).

As a general suggestion, don't start with an IDE project, simply try to
get a working Makefile with the SDK environment and make sure it builds
fine in all supported platforms. It would also be easier to provide
advice if you can upload the source code somewhere (IIUC you are simply
playing with an SDK example, so there would no problem in showing the
code).


Regards
-- 
Ariel Constenla-Haile
La Plata, Argentina

Re: Regarding MSVCR80.dll

Posted by jg <jg...@jgoettgens.de>.
Forget about Mac and Linux for a moment, since you already  seem to have 
problems on Windows.

It looks as if your makefile is incorrect about some dependencies. You 
might also check that the manifest of the project has been set up 
properly 
(http://msdn.microsoft.com/en-us/library/ms235542%28v=vs.110%29.aspx), 
although a manifest is not strictly required in your case. When you 
build your project from within VS you don't have to worry about this.

It is probably not a good idea to simply compile and link your project 
using a hand written makefile, because different platforms might need 
other tools as well (like the manifest tool to bind the executable code 
to the proper runtime libs) and you probably end up doing a lot of OS 
dependent dispatching inside the makefile. Consider generating your 
build environment with cmake (www.cmake.org).

jg



RE: Regarding MSVCR80.dll

Posted by "Shukla, Mangesh" <ma...@siemens.com>.
Hi jg,
    My aim is to develop the client dll which deals with OpenOffice.org. This dll is required on Windows/Mac/Linux as we have a application that runs on all platforms. Because of this requirement, I moved from the Visual Studio project to Makefile so that only compilation is required on each platform. However I noticed that the dll built using the Makefile complained of the MSVCR80.dll. Incidentally I even have VS2005 installed on my machine which is Win7 x64. I tried changing the C++ compiler to VS2012, but it does not compile the Makefile. I would like to know if others have experienced similar problems with the Makefile. 

Thanks
Mangesh






-----Original Message-----
From: jg [mailto:jg@jgoettgens.de] 
Sent: Friday, January 25, 2013 8:17 PM
To: api@openoffice.apache.org
Subject: Re: Regarding MSVCR80.dll

Why can't you stay with Visual Studio 2012 and install the associated Visual Studio 2012 runtime libraries
(http://www.microsoft.com/en-us/download/details.aspx?id=30679) on the other Windows targets?

If I remember correctly, MSVCR80.dll belongs to VS2005. So in case you build different versions of your module using VS2012 and VS2005 you need to have both associated runtime libraries installed.

-- 

jg


Re: Regarding MSVCR80.dll

Posted by jg <jg...@jgoettgens.de>.
Why can't you stay with Visual Studio 2012 and install the associated 
Visual Studio 2012 runtime libraries 
(http://www.microsoft.com/en-us/download/details.aspx?id=30679) on the 
other Windows targets?

If I remember correctly, MSVCR80.dll belongs to VS2005. So in case you 
build different versions of your module using VS2012 and VS2005 you need 
to have both associated runtime libraries installed.

-- 

jg