Это было нелегко, но вот шаги, которые я предпринял, чтобы заставить его работать ...
1) Загрузите и извлеките последнюю версию GSL
2) В каталоге gsl, ./configure
--disable-shared --disable-dependency-tracking CFLAGS="-DGSL_C99_INLINE -g -O2"
3) Создайте проект статической библиотеки Cocoa Touch в Xcode.
4) Скопируйте следующие заголовки в проект: config.h, build.h, gsl_machine.h
5) Найдите функции, которые вы хотите использовать в своем проекте.Скопируйте эти .c
файлы в свой проект.
6) Затем просмотрите эту функцию, чтобы увидеть, какие другие функции она вызывает, вплоть до самого дна.
7) Скопируйте в свойспроецируйте все файлы .c
, в которых находятся эти функции.
8) Скопируйте в свой проект все файлы .h
, необходимые для этих определений функций.
9) Существует большеэлегантный способ сделать это, но для меня я просто выбрал простой маршрут и изменил операторы #include <gsl/xxxxx.h>
на #include "xxxxxx.h"
.Закомментируйте любые #include
s, которые вам на самом деле не нужны.
10) Любая функция, которая вам не нужна в этих .c
файлах, вы можете удалить их, чтобы уменьшить количество других включенийвам нужно использовать.Вы можете просто удалить их, но я рекомендую вместо них поместить #if 0
и #endif
.На всякий случай, если вы что-то пропустили, и вам нужно включить их позже.
11) Постройте и проверьте ошибки.Если вам не хватает функции, включите файл .c
для этой функции, промойте, повторите.
Мне нужно было включить gsl_cdf_tdist_P()
для моего проекта, и когда я отслеживал все вызовы методов, это список всех необходимых функций.(любая функция с * после - это та, с которой уже встречались, поэтому мне не нужно было ее искать):
gsl_cdf_tdist_P
cornish_fisher
poly_eval
gsl_cdf_ugaussian_P
gauss_small
gauss_medium
get_del
gauss_large
get_del*
beta_inc_AXPY
gsl_sf_gamma_inc_Q
gsl_sf_gamma_inc_Q_e
gamma_inc_P_series
gamma_inc_D
gsl_sf_lngamma_e
lngamma_1_pade
lngamma_2_pade
lngamma_lanczos
lngamma_sgn_0
lngamma_sgn_sing
gsl_sf_lnfact_e
gsl_sf_lngamma_e*
gsl_sf_psi_int_e
gsl_sf_psi_1_int_e
gsl_sf_psi_n_e
gsl_sf_psi_e
psi_x
cheb_eval_e*
gsl_sf_psi_1_e
psi_n_xg0
gsl_sf_psi_e*
gsl_sf_hzeta_e
gsl_sf_lnfact_e*
gsl_sf_exp_mult_err_e
gsl_sf_hzeta_e*
gsl_sf_lnfact_e*
gsl_sf_exp_mult_err_e*
lngamma_lanczos*
gsl_sf_gammastar_e
gsl_sf_lngamma_e*
gsl_sf_exp_err_e
cheb_eval_e*
gammastar_ser
gsl_sf_exprel_n_CF_e
exprel_n_CF
gamma_inc_Q_asymp_unif
gsl_sf_log_1plusx_mx_e
cheb_eval_e*
gsl_sf_erfc_e
cheb_eval_e*
gamma_inc_Q_series
gamma_inc_Q_CF
gamma_inc_D*
gamma_inc_F_CF
gsl_pow_3
gamma_inc_Q_large_x
gamma_inc_D*
gamma_inc_Q_CF*
gamma_inc_P_series*
gsl_sf_gamma_inc_P
gsl_sf_gamma_inc_P_e
gamma_inc_P_series*
gamma_inc_Q_asymp_unif*
gamma_inc_Q_CF*
gamma_inc_Q_large_x*
gamma_inc_P_series*
gsl_sf_lnbeta
gsl_sf_lnbeta_e
gsl_sf_lnbeta_sgn_e
isnegint
gsl_sf_gammastar_e*
gsl_sf_log_1plusx_e
cheb_eval_e*
gsl_sf_lngamma_sgn_e
lngamma_1_pade*
lngamma_2_pade*
lngamma_lanczos*
lngamma_sgn_0*
lngamma_sgn_sing*
beta_cont_frac