LNK2001 Error - MC++ Wrapper dll calling fcns in C library compiled with VC++ 6 compiler

G

Guest

I am writing an MC++ wrapper library that provides a managed interface for
functions in a c library compiled under VC++ 6.

I get link 2001 errors for all method functions past the first 22 defined in the class
Everything seems to work fine if I include a smaller number of functions
The library that I am calling is a c library that was built with VC++
The dll I am compiling is built using Visual C++ .NE

Any ideas what might be causing this
I know that all the functions should be available through the vc++ 6 lib fil
that I am including in my MC++ wrapper dll
I think the problem may be an incompatibility between VC++ 6 and VC++.NE

Here is the class definitio

public __gc class FincadFunction

public
System::Double aaAccrual_days(double d_e, double d_t, int acc)
System::Double aaAccrual_factor(double d_e, double d_t, int acc)
System::Double aaAccrued(double princ_m, double cpn, int freq, double d_n_cf, double d_v, double d_prev_cf, int acc)
double aaAMB(double princ_m, double princ_v, double cpn, double d_m, double d_v, double yield, int freq, int d_rul, int stat __gc [], double hl __gc [,], int acc) [,]
double aaAMB_cfs(double princ_m, double princ_v, double cpn, double d_m, double d_v, int freq, int d_rul, int acc, double hl __gc [,], int orientation) [,]
double aaAMB_sim(double princ_m, double princ_v, double cpn, double d_m, double d_v, double yield, int freq, int d_rul, int stat, double hl __gc [,], int acc, int select_x, double x_percent, int orientation) [,]
System::Double aaAMB_y(double princ_m, double princ_v, double cpn, double d_m, double d_v, double price, int freq, int d_rul, int acc, double hl __gc [,], int truncate)
double aaAsian(double price_u, double ex, double average, int sam_freq, double d_exp, double d_v, double d_aver, double vlt, double rate_ann, double cost_hldg, int option_type, int stat __gc []) [,]
double aaAsian_basket_fs_MC(double ast_info __gc [,], double ex, double corr_matrix __gc [,], double d_v, double d_exp, double d_aver, double rate_ann, double sam_seq __gc [,], int option_type, double num_rnd, int table_type) [,]
double aaAsian_basket_MC(double ast_info __gc [,], double ex, double corr_matrix __gc [,], double d_v, double d_exp, double d_aver, double rate_ann, int sam_freq, int option_type, double num_rnd, int table_type) [,]
double aaAsian_fs_MC(double price_u, double ex, double d_v, double d_exp, double d_aver, double average, double vlt, double rate_ann, double cost_hldg, int option_type, double sam_seq __gc [,], double num_rnd, int table_type) [,]
double aaAsian_FX(double FX_spot, double FX_fwd, double ex, double average, int freq, double d_exp, double d_v, double d_aver, double vlt, double rate_dom_ann, int option_type, int stat __gc [], int acc_dom, int acc_for, int FX_format) [,]
System::Double aaAsian_iv(double price_u, double ex, double average, int sam_freq, double d_exp, double d_v, double d_aver, double price, double rate_ann, double cost_hldg, int option_type)
double aaAsian_MC(double price_u, double ex, double d_v, double d_exp, double d_aver, double average, double vlt, double rate_ann, double cost_hldg, int option_type, int sam_freq, double num_rnd, int table_type) [,]
double aaAsian_spread_fs_MC(double price_u1, double price_u2, double ex, double d_v, double d_exp, double d_aver, double average, double vlt1, double vlt2, double rate_ann, double cost_hldg1, double cost_hldg2, double corr, int option_type, double sam_seq __gc [,], double num_rnd, int table_type) [,]
double aaAsian_spread_MC(double price_u1, double price_u2, double ex, double d_v, double d_exp, double d_aver, double average, double vlt1, double vlt2, double rate_ann, double cost_hldg1, double cost_hldg2, double corr, int option_type, int sam_freq, double num_rnd, int table_type) [,]
double aaAver_strk_basket_fs_MC(double ast_info __gc [,], double corr_matrix __gc [,], double d_v, double d_exp, double d_aver, double rate_ann, double sam_seq __gc [,], int option_type, double num_rnd, int table_type) [,]
double aaAver_strk_basket_MC(double ast_info __gc [,], double corr_matrix __gc [,], double d_v, double d_exp, double d_aver, double rate_ann, int sam_freq, int option_type, double num_rnd, int table_type) [,]
double aaAver_strk_fs_MC(double price_u, double d_v, double d_exp, double d_aver, double average, double vlt, double rate_ann, double cost_hldg, double sam_seq __gc [,], int option_type, double num_rnd, int table_type) [,];
double aaAver_strk_MC(double price_u, double d_v, double d_exp, double d_aver, double average, double vlt, double rate_ann, double cost_hldg, int sam_freq, int option_type, double num_rnd, int table_type) [,];
double aaAver_strk_spread_fs_MC(double price_u1, double price_u2, double d_v, double d_exp, double d_aver, double average, double vlt1, double vlt2, double rate_ann, double cost_hldg1, double cost_hldg2, double corr, double sam_seq __gc [,], int option_type, double num_rnd, int table_type) [,];
double aaAver_strk_spread_MC(double price_u1, double price_u2, double d_v, double d_exp, double d_aver, double average, double vlt1, double vlt2, double rate_ann, double cost_hldg1, double cost_hldg2, double corr, int sam_freq, int option_type, double num_rnd, int table_type) [,];
double aaBarrier(double price_u, double ex, double bar, double d_v, double d_exp, int bar_type, double rebate, double vlt, double rate_ann, double cost_hldg, int option_type, int stat __gc []) [,];
double aaBarrier_am(double price_u, double ex, double bar, double d_v, double d_exp, int bar_type, double rebate, double vlt, double rate_ann, double cost_hldg, int option_type, int optimize, int stat __gc []) [,];
System::Double aaBarrier_am_iv(double price_u, double ex, double bar, double d_v, double d_exp, int bar_type, double rebate, double price_option __gc [,], double rate_ann, double cost_hldg, int option_type, int optimize);
double aaBarrier_dbl(double d_v, double d_exp, double price_u, double ex, double bar1, double bar2, double rebate_up, double rebate_dn, double vlt, double rate_ann, double cost_hldg, int option_type, int optimize, int option_style, int stat __gc []) [,];
double aaBarrier_dbl_bin(double d_v, double d_exp, double price_u, double ex, double bar1, double bar2, double rebate_exp, double rebate_up, double rebate_dn, double vlt, double rate_ann, double cost_hldg, int option_type, int optimize, int stat __gc []) [,];
double aaBarrier_dbl_bin_dbltouch(double d_v, double d_exp, double price_u, double ex, double bar1, double bar2, int bar_type, int payoff, double cash, double vlt, double rate_ann, double cost_hldg, int option_type, int dblTouch_stat, int stat __gc []) [,];
double aaBarrier_dbl_bin_hit_cash(double d_v, double d_exp, double price_u, double bar1, double bar2, double rebate_up, double rebate_dn, double rebate_exp, int paytime_type, double vlt, double rate_ann, double cost_hldg, int stat __gc []) [,];
double aaBarrier_dbl_bin_mix(double d_v, double d_exp, double price_u, double ex, double bar1, double bar2, int hit_order, int bar_type, int payoff, double cash, double vlt, double rate_ann, double cost_hldg, int option_type, int stat __gc []) [,];
};

Here are the warnings

vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_dll(double,double,double,double,double,int,double,double,double,double,int,struct xloper *)" (?aaBarrier_dll@@$$FYGPAUxloper@@NNNNNHNNNNHPAU1@@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_am2_dll(double,double,double,double,double,int,double,double,double,double,int,int,struct xloper *)" (?aaBarrier_am2_dll@@$$FYGPAUxloper@@NNNNNHNNNNHHPAU1@@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_am_iv_dll(double,double,double,double,double,int,double,struct xloper *,double,double,int,int)" (?aaBarrier_am_iv_dll@@$$FYGPAUxloper@@NNNNNHNPAU1@NNHH@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_dbl_dll(double,double,double,double,double,double,double,double,double,double,double,int,int,int,struct xloper *)" (?aaBarrier_dbl_dll@@$$FYGPAUxloper@@NNNNNNNNNNNHHHPAU1@@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_dbl_bin_dll(double,double,double,double,double,double,double,double,double,double,double,double,int,int,struct xloper *)" (?aaBarrier_dbl_bin_dll@@$$FYGPAUxloper@@NNNNNNNNNNNNHHPAU1@@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_dbl_bin_dblTouch_dll(double,double,double,double,double,double,int,int,double,double,double,double,int,int,struct xloper *)" (?aaBarrier_dbl_bin_dblTouch_dll@@$$FYGPAUxloper@@NNNNNNHHNNNNHHPAU1@@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_dbl_bin_hit_cash_dll(double,double,double,double,double,double,double,double,int,double,double,double,struct xloper *)" (?aaBarrier_dbl_bin_hit_cash_dll@@$$FYGPAUxloper@@NNNNNNNNHNNNPAU1@@Z)
vbdll.obj : error LNK2001: unresolved external symbol "struct xloper * __stdcall aaBarrier_dbl_bin_mix_dll(double,double,double,double,double,double,int,int,int,double,double,double,double,int,struct xloper *)" (?aaBarrier_dbl_bin_mix_dll@@$$FYGPAUxloper@@NNNNNNHHHNNNNHPAU1@@Z)

Here are the methods

#using <mscorlib.dll>
#include "fcvbdotnet.h"
#include "vbdotnetut.h"
#include "mt.h"
#include "vbdll.h"

System::Double FincadFunctions::aaAccrual_days(double d_e, double d_t, int acc)
{
int status = 0;
LPXLOPER resultptr = NULL;
double temp_return_days;
System::Double return_days;

// convert objects and optional values, if any

// call dll
resultptr = aaAcc_Days_dll(d_e, d_t, acc);

// extract the returning results
status = ExtractValue(resultptr, &temp_return_days);
if (status != NORMAL)
{
aaGlobalFreeAllA();
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top