Unity3D不安全的代码需要`不安全'要指定的命令行选项

时间:2014-07-01 14:30:39

标签: c# dll unity3d unsafe

我正在使用Unity3D 4.3并调用我创建的DLL。 当试图调用它所拥有的唯一函数时:

void GetModelReferences(int &nVertices, float * vertices, int &nTriangles, int * triangles, float * normals, float * uvCoordinates);
团结给我一个错误:

Unsafe code requires the `unsafe' command line option to be specified

所以在MonoDevelop我打开了Project->Assembly-Csharp options并打开了unsafe模式。

它减少了部分错误,但最后一个不会消失

Unsafe code requires the `unsafe' command line option to be specified

我该怎么办?

6 个答案:

答案 0 :(得分:12)

转到项目属性页面,然后在Build复选框Allow unsafe code下查看。 这应该可以解决你的问题。

答案 1 :(得分:8)

以下是Unity3D 5.3对我有用的内容:
- 如果在Unity Build设置 - >播放器设置 - >其他设置," API兼容级别"是" .Net 2.0",在名为gmcs.rsp的Unity Asset文件夹下创建一个文件,将以下行添加到文件中:
-unsafe
关闭Unity并再次打开它。
- 如果" API兼容级别"是" .Net 2.0 Subset",上面的文件名应该是:smcs.rsp。

请参阅下面的图片,找到"" API兼容级别"的位置。在Unity中设置 enter image description here

答案 2 :(得分:2)

答案在这里给出:http://answers.unity3d.com/questions/804103/how-to-enable-unsafe-and-use-pointers.html

你需要添加一个文件" smcs.rsp" (或" gmcs.rsp")在您的"资产"目录,其中包含以下行:

-unsafe

答案 3 :(得分:0)

您是否尝试过this

看第五条评论

  

首先显示Unity.App的内容并深入到Contents / Frameworks / MonoCompiler.framework。

     

打开名为compile_any.pl的文件,然后在“#运行   csharp编译器“更改@Base_Args选项如下:

     

我的@base_args =($ mono_path,$ mcs_path,'-debug','-unsafe',' - target:library','-nowarn:0169',' - out:'。$ output,); < / p>

答案 4 :(得分:0)

您可以通过MonoDevelop更改设置: 转到解决方案文件树-> 解决方案->您的解决方案的扩展-> Assempely-CSharp->右键单击->选项->构建->常规->语言选项->启用“允许'不安全的'代码”

答案 5 :(得分:0)

如果您在一个统一项目中,请打开“项目设置”>“其他设置”>“允许不安全代码”