LD:符号(多个)未找到架构x86_64的铛:错误:连接器命令,退出代码1失败

问题描述 投票:0回答:1

我使用的MAC OS SWIG转换C ++代码,Python代码。我用痛饮之前,但现在我有没有成功管理了一些bug。因此,对于使用痛饮,我创建了一个文件RBergomi.i并应用了以下命令

swig -c++ -python RBergomi.i

g++ -O2 -fPIC -c -std=c++11 RBergomi_wrap.cxx -I/Users/.../anaconda/include/python2.7

g++ -std=c++11 -shared RBergomi_wrap.o -o RBergomi.so

但我得到这个错误

“LD:符号(S)未找到x86_64的架构

铛:错误:连接命令退出码1失败“

我试图寻找这个问题,它似乎是错误的使用std ::来积累,这在使用我需要调用“数字”标题,然后我有问题。如果我删除页眉“数字”我没有以前的错误了,但积累是不知道。下面我RBergomi.cpp文件的代码

#include "rBergomi.h"

double updatePayoff_cholesky(Vector& Wtilde, const Vector& W1,
    Vector& v, double eta, double H, double rho, double xi,
    double T, double K, int N){
double dt = T / N;
double sdt = sqrt(dt);
scaleVector(Wtilde, pow(T, H)); // scale Wtilde for time T
compute_V(v, Wtilde, H, eta, xi, dt); // compute instantaneous variance v
double Ivdt = intVdt(v, dt);
double IsvdW = intRootVdW(v, W1, sdt);
double BS_vol = sqrt((1.0 - rho * rho) * Ivdt);
double BS_spot = exp(-0.5 * rho * rho * Ivdt + rho * IsvdW);
return BS_call_price(BS_spot, K, 1.0, BS_vol);}
void compute_V(Vector& v, const Vector& Wtilde, double H, double eta, double xi,
    double dt) {
v[0] = xi;
for (int i = 1; i < v.size(); ++i)
    v[i] = xi
            * exp(
                    eta * Wtilde[i - 1]
                            - 0.5 * eta * eta * pow(i * dt, 2 * H));}

double intVdt(const Vector & v, double dt) {
return dt * std::accumulate(v.begin(), v.end(), 0.0);}
double intRootVdW(const Vector & v, const Vector & W1, double sdt) {
double IsvdW = 0.0;
for (size_t i = 0; i < v.size(); ++i)
    IsvdW += sqrt(v[i]) * sdt * W1[i];
return IsvdW;}
double pnorm(double value) {
return 0.5 * erfc(-value * M_SQRT1_2); }
double BS_call_price(double S0, double K, double tau, double sigma, double r) {
double d1 = (log(S0 / K) + (r + 0.5 * sigma * sigma) * tau)
        / (sigma * sqrt(tau));
double d2 = d1 - sigma * sqrt(tau);
return pnorm(d1) * S0 - pnorm(d2) * K * exp(-r * tau);}
c++11 g++ swig ld
1个回答
0
投票

我用-python -dynamiclib解决连接问题,所以我用它的代码是解决问题

swig -c++ -python RBergomi.i

g++ -O2 -fPIC -c RBergomi.cpp

g++ -O2 -fPIC -c  RBergomi_wrap.cxx -I/Users/hammouc/anaconda/include/python2.7

g++ -lpython -dynamiclib RBergomi.o RBergomi_wrap.o -o _RBergomi.so
© www.soinside.com 2019 - 2024. All rights reserved.