Search code examples
campl

Using AMPL C++ Apis for C?


I've looked for C APIs, but I've only found C++ API's that can't be used inside a C code.

Are there any C (not C++ or C#) APIs or another way for using AMPL in a C code?


Solution

  • There being no C API for AMPL as far as I can tell, your best bet is to write C++ wrappers for the tasks you want to perform, assigning them C linkage (extern "C") and building them with a C++ compiler. Done correctly, these will be callable from C code. The C code will not be able to handle AMPL objects directly, however, so your wrappers will need to perform some kind of data marshaling in both directions.

    I do recommend wrappers specific to your particular tasks, as opposed to generic wrappers for the whole API. I suspect that you would find the latter a much larger and more difficult task.