2017-10-16 3 views
0

récemment commencé à coder à Swift 3.0 et Xcode 8.0- face à problème pour attribuer l'adresse de fonction de classe rapide d'annuler la liste de pointeur qui définit la structureErreur lors de l'affectation de la fonction à la liste des pointeurs vides dans SWIFT 3?

fichier.h

typedef struct MYStruct 
{ 
    void ** funptr; //The list of function pointer addr 
    size_t funCount; 

} MYStruct; 

file1.swift

..... 
func Dummy() 
{ 

} 

func utility() 
{ 
    var myStructObj = MYStruct() 

    myStructObj.funptr = &Dummy() //Error: Cannot assign value of type '() -> Int32' to type 'UnsafeMutablePointer<UnsafeMutableRawPointer?>!' 

    ...... 

// besoin de passer cette structure à la fonction C, dans la fonction C appeler la fonction différée pour exécuter

cfunc(&myStructObj); 
...... 

} 

S'il vous plaît me suggérer à résoudre, Merci en avance

Répondre

0

Comme on le comprend de la langue rapide, nous ne pouvons pas obtenir l'adresse de fonction directement par déférence comme la façon dont nous faisons dans ' C »

en rapide, seule façon d'obtenir l'adresse de fonction par le symbole, une fois que vous construisez le programme, utilisez objdump ou nm pour obtenir les symboles de la fonction dont vous avez besoin pour passer à C routines d'appel comme fonction poin

Le processus est entièrement manuel. Je suis capable de réaliser de cette manière.