Comment utiliser le code unsafe l'Unité
Je veux utiliser du code c++ en c# pour l'unité à l'aide de CLR.
Le programme fonctionne correctement en dehors de l'unité, mais à l'intérieur du moteur, il me donne une erreur:
"cs0227: code unsafe exige le "dangereux" option de ligne de commande à préciser"
Je suis vraiment confus, parce que le projet est construit avec succès dans visual studio (sans erreurs ou des avertissements). J'ai "permettre dangereux" bouton activé.
using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class newspawn_real : MonoBehaviour {
void Start () {
unsafe
{
fixed (int * p = &bam[0, 0, 0])
{
CppWrapper.CppWrapperClass controlCpp = new CppWrapper.CppWrapperClass();
controlCpp.allocate_both();
controlCpp.fill_both();
controlCpp.fill_wrapper();
}
- Si quelque chose n'est pas clair dites-le moi et je corrigerai.
- Depuis l'Unité est une boîte noire, nous ne savons pas vraiment ce que C# fonctionnalités sont prises en charge lorsque le code est converti. Grosso modo, est dangereux tout ça n'est pas. Avez-vous envisagé d'utiliser
Marshal
les méthodes de la classe ? - voulez-vous dire d'importation dll? '[DllImport("C++ unitshi.dll")] ' static extern int ajouter(int a, int b);'
- Non, je veux dire tous les types de pointeur et de l'arithmétique des pointeurs, ils ont certainement eu pour dessiner une ligne pour le web player. Mais il semble que @Programmeur de réponse vous permet de le faire.
Vous devez vous connecter pour publier un commentaire.
Vous devez activer explicitement
unsafe
code dans l'Unité. Vous pouvez suivre les étapes ci-dessous:1. Première étape, le Changement Compatibilité de l'Api de Niveau à .NET 2.0 sous-ensemble.
2. Créer un fichier dans votre
<Project Path>/Assets
le répertoire et le nom cml.rsp puis mettre-unsafe
l'intérieur de ce fichier. Enregistrez et fermez le fichier.De fermer et de rouvrir Visual Studio et de l'Unité. Vous devez re-démarrer les deux.
Il est intéressant de noter que même après avoir fait cela, et re-départ de l'Unité et de Visual Studio, mais le problème est toujours là, renommer la cml.rsp fichier à scc.rsp, ou cmg.rsp et re-démarrer à chaque fois jusqu'à ce que vous obtenez un qui fonctionne. Bien que, cml.rsp devrait le faire la première fois.
Simple C# dangereuses code qui compile après ce.
EDIT:
Pour la dernière Unité de la version, le nom de fichier doit être mcs.rsp. Tout le reste est le même.