吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 668|回复: 1
收起左侧

[其他原创] 【unity 记录踩坑过程】c# 调用 C 编译出的dll异常闪退

[复制链接]
418 发表于 2024-10-4 14:21

用C写的代码有这么一段(请无视这个糟糕的变量命名)

double a[123][123];
double b[123][123];
double c[123][123];
double d[123][123];

double aa[123][123];
double bb[123][123];
double cc[123][123];

是二维double数组,比较大,开发的时候报过0xC00000FD,栈溢出。于是写了个创建二维数组的函数

double** create_2d_array(int rows, int cols) {
    double** array = (double**)malloc(rows * sizeof(double*));
    for (int i = 0; i < rows; i++) {
        array[i] = (double*)malloc(cols * sizeof(double));
    }
    return array;
}

本来是没问题的,坏就坏在,我在开发的时候偷懒了,没把所有大数组的初始化用这个函数创建,留了四个,像这样

double a[123][123];
double b[123][123];
double c[123][123];
double d[123][123];

double **aa = create_2d_array(123, 123);
double **bb = create_2d_array(123, 123);
double **cc = create_2d_array(123, 123);

但是,build的时候它没报错啊!于是就这么编译成dll了,然后c# 调用,直接闪退。

我不是专业的游戏开发,不知道怎么debug找log,于是先用ai生成了个能够正常调用并执行的代码,然后把我的代码一点点的复制过去,看复制到哪一坨的时候unity编辑器会闪退。

在这个过程不出意外又又踩坑了。dll是放在Plugins目录里的嘛,每次成功加载后都删不掉,有时候又能删掉,替换掉新dll后执行的还是旧dll

因此浪费了不少时间 :(

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

海水很咸 发表于 2024-10-4 20:58
double** create_2d_array(int rows, int cols) {
    return  (double**)malloc(rows * cols * sizeof(double));
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 20:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表