Подскажите, пожалуйста, кто знает...
Есть DLL написанная на С++ Visual6.
Мне необходимо ей воспользоваться.
VB виснит при попытке работы с массивом переданным в DLL
Вызывается функция op_CalcData в которую передается массив
double **Prices размерности nBagSize на nTimeSize. В DLL объявлена так:
OP_API BOOL __stdcall op_CalcData(double **Prices, COLORREF *Colors, UINT nBagSize, UINT nTimeSize, double **ret)
double **ret - засунута для испытаний
В программе на VB функция объявлена и вызывается так:
Private Declare Function op_CalcData Lib "op.dll" (MasKotir() As Double, Colorr() As ColorConstants, ByVal razmer As Long, ByVal razmermatr As Long, ret() As Double) As Boolean
bol = op_CalcData(MasKotir(), Colorr, razmer, RazmerMasKotir, ret())
MasKotir и ret двумерные массивы одинаковой размерности.
( на разные типы UINT в С++ и LONG на VB и т.п. не обращайте
внимания, все ок!)
Любые попытки работы с массивом поэлементно в DLL приводят к зависанию.
Пример: копирование всех элементов массива Prices в ret
for( UINT i = 0; i< nBagSize; i++){
for(UINT k = 0; k< nTimeSize; k++){
ret[i][k] = Prices[i][k];
}
}
При этом если просто ret=Prices то все ок, но это мне не нужно!
DLL не работае с массивом поэлементно!
Если вызывать из C++ функция работает отлично . Может VB как то криво передает указатели(ссылки) или я где-то делаю что-то не то?
Помогите пожалуйста!
Заранее благодарен!