在仓颉语言中调用C/C++动态库

在仓颉语言中调用C/C++动态库

C语言代码,并生成动态库

_declspec(dllexport) int _stdcall add(int64_t a, int64_t b)

{

return a + b;

}

_declspec(dllexport) void _stdcall cprint(char* msg)

{

printf("%s\n", msg);

}仓颉调用C语言动态库(Windows)

// from std import random.* //早期版本引入包的语法

import std.random.* //在0.53.4之后,可以这样引入包

//foregin 声明外部函数

foreign func add(a: Int64, b: Int64): Int64

foreign func cprint(msg: CString): UInt64

main() {

let num = Random().nextInt32();

println("num=${num}")

unsafe {

var sum: Int64 = add(10, 20); //调用C动态库中add函数

println("c add func exec result = ${sum}");

var msg: CString = LibC.mallocCString("hello cangjip"); //声明一个c语言字符串

var num: UInt64 = cprint(msg); //将字符串通过cprint函数传达到C语言动态库中

print("${num}");

LibC.free(msg); //释放msg字符串

}

return 0

}编译命令:

# -L(要链接的文件路径) .(当前目录) -l (指定链接库) DllApp(动态库的名称)

cjc .\hello.cj -L . -l DllApp -o hello.exe

相关推荐

肯沃斯卡车价格
365BET-官网

肯沃斯卡车价格

📅 10-18 👁️ 8560
考试前必拜三大神是谁
365365094

考试前必拜三大神是谁

📅 06-28 👁️ 4757
贷款需要什么资料?很多人第一步就搞错了!
365bet体育在线娱乐场

贷款需要什么资料?很多人第一步就搞错了!

📅 12-19 👁️ 6475
【新新贷招聘】
365BET-官网

【新新贷招聘】

📅 02-16 👁️ 1208
我恨你作文500字(精选10篇)
365bet体育在线娱乐场

我恨你作文500字(精选10篇)

📅 11-30 👁️ 3931
tcp长连接保活与心跳机制
365365094

tcp长连接保活与心跳机制

📅 08-04 👁️ 8403
卡片列表
365bet体育在线娱乐场

卡片列表

📅 06-12 👁️ 2418
CSS 的空格处理
365BET-官网

CSS 的空格处理

📅 01-28 👁️ 1969
青云志法宝有多少阶 如何增加法宝进阶成功率
365bet体育在线娱乐场

青云志法宝有多少阶 如何增加法宝进阶成功率

📅 07-19 👁️ 3676