Unity加载C语言32dll,想要在Unity C#中使用Ada dll,但获取入口点未找到异常?

我有一个用ada编写的dll,我想用它在Unity项目中用C#。问题是我得到一个EntryPointNotFoundException错误。想要在Unity C#中使用Ada dll,但获取入口点未找到异常?

例如,ada代码包含一个函数Initialize_Test,它返回一个long。从我可以告诉它正确地出口这与C语言接口,并避免名称损坏:

pragma导出(C,Initialize_Test,“Initialize_Test”);

,然后在我的C#我有:

using UnityEngine;

using System.Collections;

using System.Runtime.InteropServices;

public class menuControl : MonoBehaviour {

[DllImport ("test_dll", EntryPoint="Initialize_Test")]

public static extern int Initialize_Test();

void Start() {

Debug.Log(Initialize_Test());

}

}

它得到尽可能Initialize_Test()下。根据http://www.mono-project.com/docs/advanced/pinvoke/#marshaling,这意味着它找到DLL(它被放置在插件文件夹中),但找不到函数“Initialize_Test”。

http://docs.go-mono.com/?link=T%3aSystem.TypeLoadException有什么可能导致这种情况的建议,但没有一个看起来像他们在这里适用。我认为唯一需要做的就是用dumpbin.exe获取重名的名称,但我觉得应该有一个正确的方法来做到这一点。

编译dll的人向我保证,其他人已经成功地使用它,但他们都没有使用Unity,更不用说C#。恐怕Ada只是让它不兼容,我在Unity的文档中看到了一点,这表明它不能接受某些编译器生成的本地代码。

2015-05-19

pdonk

+0

中级步骤:做一个简单的C程序调用Initialize_Test工作吗?你可以从C编写的DLL中调用函数吗?这些可能表明哪一端有问题。 –

+0

我写了一个非常简单的dll,只包含extern“C”int DllExport Initialize_Test(){return 5; },我可以从C#中调用它,没有任何问题。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值