somu
(somu)
#1
Edited:
- In my code I didn't have struct definition in the header file.
- My bad when I created this post, I had pasted the struct definition in the header.
Overview:
- I have some C code that returns a
struct Car
- I am able to invoke the code from Swift
- The return type in Swift is an Opaque Pointer
Questions:
- How can I read data from the opaque pointer ?
- Is there a way to convert it to a Swift type ?
- Or is there a better way of handling this scenario ?
Car.h
#ifndef Car_h
#define Car_h
struct Car* f1(void);
#endif /* Car_h */
Car.c:
#include "Car.h"
#include <stdio.h>
#include <stdlib.h>
struct Car {
int *prices;
int doors;
};
struct Car* f1() {
struct Car *car = malloc(sizeof(struct Car));
car->prices = malloc(sizeof(int) * 2);
car->prices[0] = 10;
car->prices[1] = 20;
car->doors = 4;
return car;
}
main.swift:
import Foundation
let result = f1()
print("result = \(result)")
1 Like
somu
(somu)
#2
Sorry was my fault, when I posted I pasted the struct definition in the header, in my real code the struct definition was in the .c file.
Cause of the problem:
- Struct definition was not in the header, moving it to the header solved the problem.