[R-pkg-devel] Package Load fails to find 3rd Party DLL
Russell Almond
ru@@e||@g@@|mond @end|ng |rom gm@||@com
Mon Jul 17 20:42:36 CEST 2023
Okay, I've changed my Makevars.win so that it has:
PKG_LIBS = -L. -L${NETICA_LIB} -lNetica
and
all: NeticaDLL
where ${NETICA_LIB} is set to the appropriate lib subdirectory of the
unpacked sources. I'm no longer getting the nm.exe error, so it may be
a bug in ld.exe.
| gcc -shared -s -static-libgcc -o RNetica.dll tmp.def Cases.o
Continuous.o Edges.o Experience.o Inference.o Networks.o Node.o Random.o
Registration.o Session.o -L.
-L/c/Users/ralmond/Projects/RNetica/src/Netica/Netica_API_510/lib64
-lNetica -LC:/rtools43/x86_64-w64-mingw32.static.posix/lib/x64
-LC:/rtools43/x86_64-w64-mingw32.static.posix/lib
-LC:/PROGRA~1/R/R-43~1.1/bin/x64 -lR
| C:\rtools43\x86_64-w64-mingw32.static.posix\bin/ld.exe: internal
error: aborting at ../../binutils-2.40/ld/ldlang.c:527 in compare_section
| C:\rtools43\x86_64-w64-mingw32.static.posix\bin/ld.exe: please report
this bug
| collect2.exe: error: ld returned 1 exit status
However, when I manually moved Netica.dll to the source directory, and
removed NETICA_LIB from the path, it compiled correctly.
So, I'm guessing this is a bug in ld.exe, and in fact it is here:
https://github.com/msys2/MINGW-packages/issues/15469
So I'll see if I can try to fix my script to only copy the .dll and not
the .lib.
--Russell
On 7/17/23 5:30 AM, Ivan Krylov wrote:
> В Fri, 14 Jul 2023 22:25:51 +0300
> Ivan Krylov <krylov.r00t using gmail.com> пишет:
>
>> Maybe it's a red herring. Maybe the message from nm about missing file
>> has always been harmless, and what we're seeing here is a bug in the
>> toolchain; perhaps ld.exe doesn't like something about Netica.lib so
>> much that it crashes. I think that's less likely. If you run the
>> commands manually but without mentioning NeticaDLL, do you get a DLL
>> in the end?
>
> Judging by your build logs, this could be a toolchain bug. If you set
> the *.lib file aside and only give the *.dll to the linker (using
> -l:Netica.dll if necessary), does it still fail? I know that GCC can
> link directly to *.dll files, without relying on import libraries.
>
More information about the R-package-devel
mailing list