4

我无法使用 R-3.6 安装 RDCOMClient

一些背景: RDCOMClient 在我的 R-3.51 实例中工作,我需要使用 3.6,我需要使用 RDCOMClient 与我的桌面 Outlook 交互。mailR 和 sendmailR 目前不是一个选项。

我试过的东西:

>install.packages("RDCOMClient")
Installing package into ‘C:/Users/<user>/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘RDCOMClient’ is not available (for R version 3.6.0)
> library("devtools")
> install_github('omegahat/RDCOMClient')
Error: Failed to install 'unknown package' from GitHub:
  Timeout was reached: Connection timed out after 10000 milliseconds
> install.packages("RDCOMClient", repos = "http://www.omegahat.org/R")
Installing package into ‘C:/Users/<users>/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
Warning in install.packages :
  unable to access index for repository http://www.omegahat.org/R/src/contrib:
  cannot open URL 'http://www.omegahat.org/R/src/contrib/PACKAGES'
Warning in install.packages :
  package ‘RDCOMClient’ is not available (for R version 3.6.0)
Warning in install.packages :
  unable to access index for repository http://www.omegahat.org/R/bin/windows/contrib/3.6:
  cannot open URL 'http://www.omegahat.org/R/bin/windows/contrib/3.6/PACKAGES'
> install.packages("RDCOMClient", repos = "http://www.omegahat.net/R")
Installing package into ‘C:/Users/<user>/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
Warning in install.packages :
  unable to access index for repository http://www.omegahat.net/R/bin/windows/contrib/3.6:
  cannot open URL 'http://www.omegahat.net/R/bin/windows/contrib/3.6/PACKAGES'
Package which is only available in source
  form, and may need compilation of
  C/C++/Fortran: ‘RDCOMClient’
installing the source package ‘RDCOMClient’

trying URL 'http://www.omegahat.net/R/src/contrib/RDCOMClient_0.93-0.tar.gz'
Content type 'application/x-gzip' length 49509 bytes (48 KB)
downloaded 48 KB

* installing *source* package 'RDCOMClient' ...
** using staged installation
** libs

*** arch - i386
C:/Rtools/mingw_32/bin/g++  -I"C:/PROGRA~1/R/R-36~1.0/include" -DNDEBUG -D_GNU_ -DNO_PYCOM_IPROVIDECLASSINFO -I.      -Wno-deprecated    -O2 -Wall  -mtune=generic -c COMError.cpp -o COMError.o
COMError.cpp:347:0: warning: "_countof" redefined
 #define _countof(array) (sizeof(array)/sizeof(array[0]))
 ^
In file included from C:/Rtools/mingw_32/i686-w64-mingw32/include/combaseapi.h:129:0,
                 from C:/Rtools/mingw_32/i686-w64-mingw32/include/objbase.h:14,
                 from C:/Rtools/mingw_32/i686-w64-mingw32/include/ole2.h:17,
                 from C:/Rtools/mingw_32/i686-w64-mingw32/include/wtypes.h:12,
                 from C:/Rtools/mingw_32/i686-w64-mingw32/include/winscard.h:10,
                 from C:/Rtools/mingw_32/i686-w64-mingw32/include/windows.h:97,
                 from RCOMObject.h:23,
                 from COMError.cpp:1:
C:/Rtools/mingw_32/i686-w64-mingw32/include/stdlib.h:299:0: note: this is the location of the previous definition
 #define _countof(_Array) sizeof(*__countof_helper(_Array))
 ^
In file included from COMError.cpp:1:0:
RCOMObject.h: In member function 'virtual ULONG RCOMObject::Release()':
RCOMObject.h:61:50: warning: deleting object of abstract class type 'RCOMObject' which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor]
                                           delete this;
                                                  ^
COMError.cpp: In function 'void GetScodeString(HRESULT, LPTSTR, int)':
COMError.cpp:371:39: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'HRESULT {aka long int}' [-Wformat=]
  sprintf(buf, ("OLE error 0x%08x"), hr);
                                       ^
COMError.cpp: In function 'HRESULT checkErrorInfo(IUnknown*, HRESULT, SEXPREC**)':
COMError.cpp:409:51: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'HRESULT {aka long int}' [-Wformat=]
   fprintf(stderr, "<checkErrorInfo> %X \n", status);
                                                   ^
C:/Rtools/mingw_32/bin/gcc  -I"C:/PROGRA~1/R/R-36~1.0/include" -DNDEBUG -D_GNU_ -DNO_PYCOM_IPROVIDECLASSINFO -I.         -O3 -Wall  -std=gnu99 -mtune=generic -c RUtils.c -o RUtils.o
C:/Rtools/mingw_32/bin/g++  -I"C:/PROGRA~1/R/R-36~1.0/include" -DNDEBUG -D_GNU_ -DNO_PYCOM_IPROVIDECLASSINFO -I.      -Wno-deprecated    -O2 -Wall  -mtune=generic -c connect.cpp -o connect.o
connect.cpp: In function 'HRESULT R_getCOMArgs(SEXP, DISPPARAMS*, DISPID*, int, int*)':
connect.cpp:405:10: warning: variable 'hr' set but not used [-Wunused-but-set-variable]
  HRESULT hr;
          ^
C:/Rtools/mingw_32/bin/g++  -I"C:/PROGRA~1/R/R-36~1.0/include" -DNDEBUG -D_GNU_ -DNO_PYCOM_IPROVIDECLASSINFO -I.      -Wno-deprecated    -O2 -Wall  -mtune=generic -c converters.cpp -o converters.o
In file included from converters.cpp:1:0:
RCOMObject.h: In member function 'virtual ULONG RCOMObject::Release()':
RCOMObject.h:61:50: warning: deleting object of abstract class type 'RCOMObject' which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor]
                                           delete this;
                                                  ^
converters.cpp: In function 'SEXPREC* R_convertDCOMObjectToR(VARIANT*)':
converters.cpp:365:11: warning: variable 'hr' set but not used [-Wunused-but-set-variable]
   HRESULT hr;
           ^
C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o RDCOMClient.dll tmp.def COMError.o RUtils.o connect.o converters.o -lole32 -loleaut32 -luuid -LC:/PROGRA~1/R/R-36~1.0/bin/i386 -lR
COMError.o:COMError.cpp:(.text+0x2b3): undefined reference to `vtable for RCOMObject'
COMError.o:COMError.cpp:(.text+0x4c3): undefined reference to `vtable for RCOMObject'
COMError.o:COMError.cpp:(.text$_ZN10RCOMObject7ReleaseEv+0x19): undefined reference to `vtable for RCOMObject'
converters.o:converters.cpp:(.text+0x175d): undefined reference to `vtable for RCOMObject'
collect2.exe: error: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'RDCOMClient'
* removing 'C:/Users/<user>/Documents/R/win-library/3.6/RDCOMClient'
Warning in install.packages :
  installation of package ‘RDCOMClient’ had non-zero exit status

The downloaded source packages are in
    ‘C:\Users\<user>\AppData\Local\Temp\Rtmpc7CCRI\downloaded_packages’

我怀疑 RDCOMClient 不支持 3.6,因为它不在此处的目录中:http ://www.omegahat.net/R/bin/windows/contrib/ ,但我想在继续之前我会在这里尝试。

我能做些什么来让它工作吗?

4

5 回答 5

9

不是这样,RDCOMClient 不支持 R3.6。它只是(还没有)用 3.6x 编译并被放置在存储库“ http://www.omegahat.net/R/bin/windows/contrib/3.6/ ”中当前版本的子目录中。但是用 R 3.5x 编译的 0.93-0 版本完全兼容 R 3.6x,只需从 3.5 目录“ http://www.omegahat.net/R/bin/windows/contrib/3.5.1/ ”下载并从本地 PC 以 zip 格式安装。

或者直接做

url <- "http://www.omegahat.net/R/bin/windows/contrib/3.5.1/RDCOMClient_0.93-0.zip"
install.packages(url, repos=NULL, type="binary")
于 2019-09-05T08:47:53.750 回答
1

这对我有用

library("devtools")
install_github('omegahat/RDCOMClient')
于 2021-09-09T06:11:32.043 回答
0

看来 RDCOMClient 目前不支持 R3-6。要解决此问题,我必须在选项中切换到版本 R3.51 以运行 RDCOMClient 并发送电子邮件。

这不是一个理想的解决方案,但在他们发布更新版本之前会这样做。

于 2019-07-15T17:20:48.280 回答
0

http://www.omegahat.net/R/bin/windows/contrib/4.0.0/上有一个包更新对我有用(R-4.0.3)。猜猜它也应该适用于 R-3.6。

于 2020-10-19T14:31:17.767 回答
0

您可以尝试从 omegahet 访问它。它完美地工作

url <- "http://www.omegahat.net/R/bin/windows/contrib/3.5.1/RDCOMClient_0.93-0.zip" install.packages(url, repos=NULL, type="binary")

于 2021-06-30T18:29:44.060 回答