I am having serious trouble passing a string from swift, to a function written in c.
I'm trying to do this in my swift code
var address = "192.168.1.2"
var port = 8888
initSocket(address, port)
The c function looks like this:
void initSocket(char *address, int port);
Im getting the error: Cannot convert the expression's of type 'Void' to type 'CMutablePointer'
I can't seem to find a solution that works.
2 Answers 2
Swift CStrings work seamlessly with C constant strings, so use
void initSocket(const char *address, int port);
instead of char*
argument, and declare your address
variable as CString:
var address: CString = "192.168.1.2";
1 Comment
UnsafePointer<UInt8>
and Swift strings can automatically bridge to that. The type CString
has been removed from the language.in C, declare your parameter like this
void setLastName(const char* lastName){
}
then in swift, you can directly pass in a regular swift string
setLastName("Montego");
the key is to define the variable with the asterisk immediately after the char in C like: const char*
const char*
argument on C side it would work seamlessly.initSocket(const char* address)
and string declaration to `var address: CString = "192.168.1.2" Thanks again!