[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compiling shared libraries for use with call_external on a Mac
In article <arkos-1204001537010001@merlin.phys.ucalgary.ca>,
arkos@NOSPAMphys.ucalgary.ca (Gregory G. Arkos) wrote:
>An addition to what I asked below:
>
>I can add a "dummy" main() to the C file, and produce something
>which appears to be a shared library. However, when I try to
>use call_external from the IDL side, I get the error:
>
>% CALL_EXTERNAL: Error loading sharable executable.
> Symbol: testing_external, File =
> Documents:Arkos:SMS:PLOT:test_external_libs
> symbol was not found
>% Execution halted at: TEST_CALL_EXTERNAL 18
> Documents:Arkos:SMS:PLOT:test_call_external.pro
>% $MAIN$
>
>I don't know if I am doing something wrong on the C side in
>creating the shared library, or on the IDL side in the
>implementation, so any suggestions would be appreciated.
>
>Thanks again,
>
>-- Greg
>
OK, Greg, you have not exported your library's symbols (that is:
function names). There are several ways to do this.
The easiest is:
Go to the CW project's Settings Panel and look for the PPC PEF settings
panel under "Linker". Change the "Export" option from 'None' to 'All
Globals'. Re-link; things should be fine.
The better way is:
Do most of the previous, but this time select the 'Use ".exp" file'
option for "Export". Link once, find the .exp file that was created for
your project and open it for editing. Take out all but the function
names you wish IDL to call (there could be hundreds you don't care
about). Save the much reduced file and re-link.
- Rob Preece
UAH Dept. of Physics
Many thanks to the rest of you for enduring this somewhat of-topic,
Mac-centric ramble. I'll go and re-lurk now...