Насколько я могу судить, CAM для AMPL отсутствует, поэтому лучше всего написать обертки на C ++ для задач, которые вы хотите выполнить, назначить им связи C (extern "C"
) и собрать их с помощью компилятора C ++.Сделано правильно, они будут вызываться из кода C.Однако код C не сможет обрабатывать объекты AMPL напрямую, поэтому вашим оберткам нужно будет выполнить какой-то маршалинг данных в обоих направлениях.
Я рекомендую обертки, специфичные для ваших конкретных задач, в отличие отуниверсальные обертки для всего API.Я подозреваю, что вы найдете последнее гораздо более сложной и сложной задачей.