Dear Duncan,

I know that I am asking an unusual question, since MS VC++ is not supported, and I have of course installed the Rtools. However, asking support from MS is not an option for the following reason:

Looking at different VC forums everybody tells you that you should compile all libraries with the same option and you should not mix options /MD with /MT, and this is the answer I will get.

Furthermore, as I have already mentioned, library xps.dll compiled with /MD works perfectly fine on WinXP and Vista when used independent from R. The problem is that when calling library(xps) from within R, R can load library xps.dll, but it cannot load the libraries which are called from library xps.dll such as library libCore.dll.

Since the question is why can R not load a C++ library which is called from library xps.dll, asking this question at R-devel seems for me to be the only option.

Best regards
Christian


Duncan Murdoch wrote:
On 18/09/2009 6:12 PM, cstrato wrote:
Dear all,

Please, please I really need your help, since I am not able to solve the problem myself: It seems that until now most Windows users of my Bioconductor package "xps" use Windows XP, but recently a user tried to use it on Windows Vista where it crashed R immediately. Since I assume that some users may migrate to the upcoming Windows 7 where the problem will be the same, I would appreciate any help to be able to support Vista/Windows 7, thank you in advance.

You are requiring specific Microsoft tools to compile a package, which fails on one Microsoft OS, but not another. Isn't this a question you should address to Microsoft?

For the record:

We support compiling in the compiler listed in the R-admin manual, which is available from www.murdoch-sutherland.com/Rtools. If you choose to use a different compiler, you should seek support from its supplier.

Duncan Murdoch


The problem ist that my package consists mainly of C++ code which I must compile with Visual C++ (Express Edition 2008), since it depends on the ROOT C++ framework. Windows users download and install first the ROOT Windows binary compiled with VC9 and then install the Windows binary of xps.

Thus package xps contains a "Makefile.win" where I use one of the compiler options "/MT" or "/MD", respectively, see: http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx

Since the Windows binary of ROOT is compiled with option "/MD" I should in principle use this option, however, R does not accept this option. Luckily, for Winodws XP I can compile xps with "/MT" and this works perfectly fine.

The real problem is that neither option works on Windows Vista, although I can run "R CMD INSTALL" in both cases. However, when loading "library(xps)" using Rterm.exe I get the following two cases:

1, xps compiled on Vista with option "/MD":
   new R session:
   > library(xps,lib.loc="C:/home/Rabbitus/CRAN/myRlib")
   Error in inDL(x, as.logical(local), as.logical(now), ...) :
cannot load shared library 'C:/home/CS/CRAN/myRlib/xps/libs/xps.dll':
    LoadLibrary failure:  A DLL-Initialisationroutine failed.

Then R crashes and Vista displays a Dialogbox with the following message:
R for Windows terminal front-end does no longer function
  Anwendungszeitstempel:    4a928a5c
  Fehlermodulname:    libCore.dll_unloaded
  Fehlermodulversion:    0.0.0.0
  Fehlermodulzeitstempel:    4a4b94a1
  Ausnahmecode:    c0000005
  Ausnahmeoffset:    0413a6f0
  Betriebsystemversion:    6.0.6001.2.1.0.768.3
  Gebietsschema-ID:    1031
  Zusatzinformation 1:    b2be
  Zusatzinformation 2:    82109204b3973566ace818217390e302
  Zusatzinformation 3:    1563
  Zusatzinformation 4:    deee40b8797d25628c21b9ef47e8a50c

2, xps compiled on Vista with option "/MT":
   new R session:
   > library(xps,lib.loc="C:/home/CS/CRAN/myRlib")
> scheme.test3 <- root.scheme(paste(.path.package("xps"),"schemes/SchemeTest3.root",sep="/")) > data.test3 <- import.data(scheme.test3, "DataTest3", celdir=paste(.path.package("xps"),"raw",sep="/"))

   ==========================================
   =============== STACKTRACE ===============
   ==========================================


   ==========================================
   ============= END STACKTRACE =============
   ==========================================

Then R crashes and Vista displays a Dialogbox with the following message:
R for Windows terminal front-end does no longer function
Problemsignatur:
  Problemereignisname:    APPCRASH
  Anwendungsname:    Rterm.exe
  Anwendungsversion:    2.92.49384.0
  Anwendungszeitstempel:    4a928a5c
  Fehlermodulname:    ntdll.dll
  Fehlermodulversion:    6.0.6001.18000
  Fehlermodulzeitstempel:    4791a7a6
  Ausnahmecode:    c0000005
  Ausnahmeoffset:    0006814c
  Betriebsystemversion:    6.0.6001.2.1.0.768.3
  Gebietsschema-ID:    1031
  Zusatzinformation 1:    92ec
  Zusatzinformation 2:    c556221fb8ba46fdaae5867fc20d6575
  Zusatzinformation 3:    c65f
  Zusatzinformation 4:    9d4dfe391e0e922aa627634d4d47a122


Here is the same information for Windows XP:

1, xps compiled on WinXP with option "/MD":
   new R session:
   > library(xps,lib.loc="C:/home/CS/CRAN/myRlib")

R crashes and the following Dialogbox from "Microsoft Visual C++ Runtime Library" is displayed:
   Runtime Error!
   Program: c:\Programme\R\R-2.9.0\bin\Rterm.exe
   R6034
An application has made an attempt to load the C runtime library incorrectly.
   Please contact the application's support team for more  information.

2, xps compiled on WinXP with option "/MT":
   new R session:
   > library(xps,lib.loc="C:/home/CS/CRAN/myRlib")
Luckily, R runs w/o any problems and this is the setting of the current Windows binary of "xps".

In summary, on WinXP package xps must be compiled with option "/MT" to be used with R.

In contrast, on Vista library(xps) does not work when compiled with either option: - for option "/MT" library(xps) can be loaded but crashes R with "Errormodulename: "ntdll.dll" - for option "/MD" library(xps) cannot be loaded, since the ROOT library "libCore.dll" cannot be loaded ("Errormodulename: "libCore.dll_unloaded")

It is important to note that on both WinXP AND Vista library "xps.dll" compiled with option "/MD" does work perfectly fine when running from within ROOT!

Please, can anybody tell me why Rterm on Vista crashes when running library(xps)? It seems that for option "/MD" Rterm is not able to load the ROOT core library "libCore.dll", why?

Any help is greatly appreciated otherwise my package "xps" will not be able to run on Vista and more important, Windows 7.

Thank you in advance.
Best regards
Christian
_._._._._._._._._._._._._._._._._._
C.h.r.i.s.t.i.a.n   S.t.r.a.t.o.w.a
V.i.e.n.n.a           A.u.s.t.r.i.a
e.m.a.i.l:        cstrato at aon.at
_._._._._._._._._._._._._._._._._._

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel



______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to