Unity_记一次dll引入_Import和方法调用以及dll找不到不存在排查

参考:

目录

一开始提示,dll找不到;

另外的一个dll,提示,dll找不到

第一个C语言

C语言函数作为函数参数

No Entrance - 没有入口

Dll占用

扩展阅读:


参考一:

【转载】Unity3d引用外部的dll - 程序员大本营 (pianshen.com)

 

一开始提示,dll找不到;

(用c++写的)

一开始以为是位置放错了,仔细看了一下,原来要64位编译

!!仔细看报错还是很重要的!!

虽然很多提示都不知所云,也只能通过一些线索分析和试错排查

什么位置放错,dllimport不要写.dll这些屁话就不要发布到网上了,一般不是这种问题造成的

小学生写个作文会离题万丈,但是做个原型填空,还是不会填错的

 

另外的一个dll,提示,dll找不到

(c#写的,shi 是真找不到)

 

第一个C语言代码

#include <algorithm>
#define DLLExport __declspec(dllexport)
extern "C"
{
	DLLExport int GetMaxNumber(int x, int y)
	{
		return std::max(x, y);
	}

}

C语言函数作为函数参数

在C#中调用UnmanagedFunctionPointer以获得自定义调用约定 - 程序园 (voidcn.com)

 

c#里需要写的代码

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    public delegate void Func(string userStr);

 

c语言

extern "C" __declspec(dllexport) int __stdcall callUsercallFunction(int functionPointer, int arg1 )
{
    int retVal;

    _asm 
    {
        mov esi, arg1
        call functionPointer
        mov retVal, eax
    }

    //Fake returning al, the lower byte of eax
    return retVal & 0x000000FF;
}

 

VS x64平台不支持内联汇编

VS2010 X64汇编(使用了非标准扩展: 不支持在此结构上使用“_asm”关键字解决方法)_日月忽其不淹兮,春与秋其代序 认知即成长-CSDN博客

No Entrance - 没有入口

这个也好理解,就是要写公布dllExport

Dll占用

就是调用了dll内部的方法,占用内存了,就不能删除这个.dll,必须整个Editor关掉(360粉碎也没有用),侧面证明了dll确实被调用成功

要找到根本占用原因,也要看看有没办法,调用Dll,而不占用,可以快速替换

扩展阅读:

关于C语言调用Unity3d C#函数的方法_nature19862001的专栏-CSDN博客

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值