我有这个代码在我的。数据部分:
sort_list dq __imp_bubbleSort, __imp_insertionSort, __imp_quickSort, __imp_selectionSort, __imp_shakerSort
cur_sort dq 1
我从dll导入的这些函数:
extern __imp_bubbleSort:qword
extern __imp_shakerSort:qword
extern __imp_quickSort:qword
extern __imp_selectionSort:qword
extern __imp_insertionSort:qword
在函数中,我试着这样调用这个函数:
SortThread proc
local demmy:qword
sub rsp, stacksz
mov bSorting, 1
mov rcx, p_arr
mov rdx, arrsize
mov rax, cur_sort
mov rbx, sort_list
call qword ptr [rbx + rax * 8]
mov bSorting, 0
ret
SortThread endp
对于[rbx+0 * 8]它是正确的我的冒泡排序函数,但对于[rbx+1 * 8]我得到错误的函数,但这个函数也在我的dll中。.所以首先是我的sort_list中的地址错误。为什么?如果你需要dll中的函数代码,请随时告诉我.
1条答案
按热度按时间w3nuxt5m1#
哎呀,我把指针弄得有点乱。现在起作用了!