Hi, all--

I ran into something peculiar last night while attempting to install the
canvas-draw egg. There was a linker error saying that the function
"cdInitContextPlus" was undefined. This didn't make sense at first, since I
knew the appropriate library, 'cdcontextplus,' was installed, and all
environment variables related to libraries were correct.

However, I noticed that the compiler command line as reported by
chicken-install was missing '-lcdcontextplus.' Then I checked the
canvas-draw.setup file, and I saw:

    ,@(cond-expand
         [disable-canvas-draw-native
             '()]
         [else
             (append
                  (if (find-library "cdx11" "cdContextNativeWindow")
                      '("-lcdx11") '())
                  (if (find-library "cdcontextplus" "cdInitContextPlus")
                      '("-lcdcontextplus") '()))])

Then I checked the docs for find-library, and found:

    (find-library NAME PROC) [procedure]

        Returns #t if the library named libNAME.[a|so] (unix) or NAME.lib
(windows) could be found by compiling and linking a test program.

I gather that .lib is the extension for static libraries on Windows,
whereas I had installed only the DLL version of the IM, CD, and IUP
libraries. So that seemed to explain the error. And indeed, I found that
when I replace the IF clause in the setup file with just

    '("-lcdcontextplus")

The egg then compiled without error.

But I'm wondering why I needed to do that. Is there some reason why it
would be a bad idea, or would not work, for find-library to test DLLs as
well as static libs?

TIA for any info.

--
Matt Gushee
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to