Ну, я прочитал вопросы, похожие на мои, но я еще не смог решить эту проблему. Я также проверил this, что, очевидно, может решить мою проблему. Но это не так.Функция вызова C из встроенной сборки VS2012 - segfault?
У меня есть функция C в файле я работаю:
void copiarMuestreo(unsigned short * source, int * sPos, unsigned short * destination, int * dPos, int bitsPerSample) {...}
Все его внутренние операции выполняются в C. источника указатель на вектор, как назначения.
Я пытаюсь вызвать эту функцию из встроенного кода сборки (я положу всю функцию здесь):
void unirArchivosWAVE(unsigned short *parte1, unsigned short *parte2, unsigned short *salida, int bitsPorMuestreo){
int posParte1; //Posicion en la que lee la primera muestra
int posParte2; //Posicion en la que lee la segunda muestra
int posSalida; //Posicion en la que escribe las muestras
int i = pistaEntrada1.numSamples;
__asm {
push eax
push ebx
push ecx
push edx
push edi
mov edi, i
mov i, 0
mov posParte1, 0
mov posParte2, 0
mov salida, 0
forGrande:
cmp i, edi
jge finForGrande
lea bx, posParte1
lea cx, posParte2
lea dx, posSalida
push bitsPorMuestreo
push dx
push salida
push bx
push parte1
call copiarMuestreo
pop parte1
pop bx
pop salida
pop dx
pop bitsPorMuestreo
push bitsPorMuestreo
push dx
push salida
push cx
push parte2
call copiarMuestreo
pop parte2
pop cx
pop salida
pop dx
pop bitsPorMuestreo
inc i
jmp forGrande
finForGrande:
fin:
pop edi
pop edx
pop ecx
pop ebx
pop eax
}
}
Я программирование в Windows 8, 64 бит, с VS2012 Express, в Intel Core i5. Программа прекращается без каких-либо сообщений об ошибках в любом месте, и я подозреваю, что это segfault. Но почему?
Сначала я нажимал 32-разрядные регистры перед вызовом, и я думал, что проблема была в 4 байтах вместо 2 байтов, используемых шортами. Нет, он все еще падает.
Я не знаю. Я ничего не пробовал, потому что хорошо, я просто не знаю, что попробовать. Я новичок в сборке.
Извините за имена переменных в Испании.
Вы можете запустить его через отладчик? – FDinoff
Я не знаю, как, как это встроенный код. Отладчик VS дает мне ошибки относительно некоторых файлов PDB, которые недоступны. –