add dart support

This commit is contained in:
dreamcmi 2024-10-14 11:53:27 +08:00
parent b9a2fafa70
commit 00de7ebc6a
9 changed files with 887 additions and 0 deletions

View File

@ -0,0 +1,321 @@
{
"configVersion": 2,
"packages": [
{
"name": "_fe_analyzer_shared",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-73.0.0",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "_macros",
"rootUri": "file:///opt/homebrew/Cellar/dart/3.5.3/libexec/pkg/_macros",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "analyzer",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/analyzer-6.8.0",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "args",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/args-2.5.0",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "async",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/async-2.11.0",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "boolean_selector",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1",
"packageUri": "lib/",
"languageVersion": "2.17"
},
{
"name": "collection",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/collection-1.19.0",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "convert",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/convert-3.1.1",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "coverage",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/coverage-1.9.2",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "crypto",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/crypto-3.0.5",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "ffi",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/ffi-1.2.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "file",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/file-7.0.1",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "frontend_server_client",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/frontend_server_client-4.0.0",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "glob",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/glob-2.1.2",
"packageUri": "lib/",
"languageVersion": "2.19"
},
{
"name": "http_multi_server",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/http_multi_server-3.2.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "http_parser",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/http_parser-4.1.0",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "io",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/io-1.0.4",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "js",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/js-0.7.1",
"packageUri": "lib/",
"languageVersion": "3.1"
},
{
"name": "lints",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/lints-4.0.0",
"packageUri": "lib/",
"languageVersion": "3.1"
},
{
"name": "logging",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/logging-1.2.0",
"packageUri": "lib/",
"languageVersion": "2.19"
},
{
"name": "macros",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/macros-0.1.2-main.4",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "matcher",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/matcher-0.12.16+1",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "meta",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/meta-1.16.0",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "mime",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/mime-2.0.0",
"packageUri": "lib/",
"languageVersion": "3.2"
},
{
"name": "node_preamble",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/node_preamble-2.0.2",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "package_config",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/package_config-2.1.0",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "path",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/path-1.9.0",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "pool",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/pool-1.5.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "pub_semver",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/pub_semver-2.1.4",
"packageUri": "lib/",
"languageVersion": "2.17"
},
{
"name": "shelf",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf-1.4.2",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "shelf_packages_handler",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf_packages_handler-3.0.2",
"packageUri": "lib/",
"languageVersion": "2.17"
},
{
"name": "shelf_static",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf_static-1.1.3",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "shelf_web_socket",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf_web_socket-2.0.0",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "source_map_stack_trace",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.2",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "source_maps",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/source_maps-0.10.12",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "source_span",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/source_span-1.10.0",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "stack_trace",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/stack_trace-1.12.0",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "stream_channel",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/stream_channel-2.1.2",
"packageUri": "lib/",
"languageVersion": "2.19"
},
{
"name": "string_scanner",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/string_scanner-1.3.0",
"packageUri": "lib/",
"languageVersion": "3.1"
},
{
"name": "term_glyph",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/term_glyph-1.2.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "test",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/test-1.25.8",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "test_api",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/test_api-0.7.3",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "test_core",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/test_core-0.6.5",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "typed_data",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/typed_data-1.3.2",
"packageUri": "lib/",
"languageVersion": "2.17"
},
{
"name": "vm_service",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/vm_service-14.3.0",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "watcher",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/watcher-1.1.0",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "web",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/web-1.1.0",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "web_socket",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/web_socket-0.1.6",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "web_socket_channel",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/web_socket_channel-3.0.1",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "webkit_inspection_protocol",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/webkit_inspection_protocol-1.2.1",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "yaml",
"rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/yaml-3.1.2",
"packageUri": "lib/",
"languageVersion": "2.19"
},
{
"name": "dartHello",
"rootUri": "../",
"packageUri": "lib/",
"languageVersion": "3.4"
}
],
"generated": "2024-10-14T02:37:48.199003Z",
"generator": "pub",
"generatorVersion": "3.5.3",
"pubCache": "file:///Users/darren/.pub-cache"
}

22
dart/build.sh Normal file
View File

@ -0,0 +1,22 @@
#!/bin/bash
PROJECT_DIR=$(pwd)
RUAPU_API_DIR="$PROJECT_DIR/ruapu-api"
BUILD_DIR="$PROJECT_DIR/build"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR" || exit
cmake "$RUAPU_API_DIR"
make
if [ $? -ne 0 ]; then
echo "编译失败,请检查错误信息。"
exit 1
fi
cd "$PROJECT_DIR" || exit
dart pub get
dart run main.dart

33
dart/main.dart Normal file
View File

@ -0,0 +1,33 @@
import 'dart:io';
import 'ruapu_api.dart';
import 'package:path/path.dart' as path;
void main() {
var libraryPath =
path.join(Directory.current.path, 'build', 'libruapu.so');
if (Platform.isMacOS) {
libraryPath =
path.join(Directory.current.path, 'build', 'libruapu.dylib');
}
if (Platform.isWindows) {
libraryPath = path.join(
Directory.current.path, 'build', 'Debug', 'hello.dll');
}
Ruapu api = Ruapu(libraryPath);
api.init();
List<String> isas = api.getRuapuISA();
print("This CPU Support:");
for (String isa in isas) {
print(isa);
}
print("=================");
String isaToCheck = 'aes';
bool isSupported = api.supportsISA(isaToCheck);
print('Does the system support $isaToCheck? $isSupported');
}

410
dart/pubspec.lock Normal file
View File

@ -0,0 +1,410 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
_fe_analyzer_shared:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77"
url: "https://pub.dev"
source: hosted
version: "73.0.0"
_macros:
dependency: transitive
description: dart
source: sdk
version: "0.3.2"
analyzer:
dependency: transitive
description:
name: analyzer
sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a"
url: "https://pub.dev"
source: hosted
version: "6.8.0"
args:
dependency: transitive
description:
name: args
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
url: "https://pub.dev"
source: hosted
version: "2.5.0"
async:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
collection:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.19.0"
convert:
dependency: transitive
description:
name: convert
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
coverage:
dependency: transitive
description:
name: coverage
sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5
url: "https://pub.dev"
source: hosted
version: "1.9.2"
crypto:
dependency: transitive
description:
name: crypto
sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
url: "https://pub.dev"
source: hosted
version: "3.0.5"
ffi:
dependency: "direct main"
description:
name: ffi
sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
file:
dependency: transitive
description:
name: file
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.dev"
source: hosted
version: "7.0.1"
frontend_server_client:
dependency: transitive
description:
name: frontend_server_client
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
url: "https://pub.dev"
source: hosted
version: "4.0.0"
glob:
dependency: transitive
description:
name: glob
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
http_multi_server:
dependency: transitive
description:
name: http_multi_server
sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
url: "https://pub.dev"
source: hosted
version: "3.2.1"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4"
url: "https://pub.dev"
source: hosted
version: "4.1.0"
io:
dependency: transitive
description:
name: io
sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
js:
dependency: transitive
description:
name: js
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.7.1"
lints:
dependency: "direct dev"
description:
name: lints
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
logging:
dependency: transitive
description:
name: logging
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
macros:
dependency: transitive
description:
name: macros
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
url: "https://pub.dev"
source: hosted
version: "0.1.2-main.4"
matcher:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
meta:
dependency: transitive
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.16.0"
mime:
dependency: transitive
description:
name: mime
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
node_preamble:
dependency: transitive
description:
name: node_preamble
sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
package_config:
dependency: transitive
description:
name: package_config
sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
path:
dependency: "direct main"
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
pool:
dependency: transitive
description:
name: pool
sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
url: "https://pub.dev"
source: hosted
version: "1.5.1"
pub_semver:
dependency: transitive
description:
name: pub_semver
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
shelf:
dependency: transitive
description:
name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
url: "https://pub.dev"
source: hosted
version: "1.4.2"
shelf_packages_handler:
dependency: transitive
description:
name: shelf_packages_handler
sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
shelf_static:
dependency: transitive
description:
name: shelf_static
sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
url: "https://pub.dev"
source: hosted
version: "1.1.3"
shelf_web_socket:
dependency: transitive
description:
name: shelf_web_socket
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
source_map_stack_trace:
dependency: transitive
description:
name: source_map_stack_trace
sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
url: "https://pub.dev"
source: hosted
version: "2.1.2"
source_maps:
dependency: transitive
description:
name: source_maps
sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
url: "https://pub.dev"
source: hosted
version: "0.10.12"
source_span:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
version: "2.1.2"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test:
dependency: "direct dev"
description:
name: test
sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f"
url: "https://pub.dev"
source: hosted
version: "1.25.8"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.3"
test_core:
dependency: transitive
description:
name: test_core
sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d"
url: "https://pub.dev"
source: hosted
version: "0.6.5"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
url: "https://pub.dev"
source: hosted
version: "1.3.2"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.3.0"
watcher:
dependency: transitive
description:
name: watcher
sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
web:
dependency: transitive
description:
name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
url: "https://pub.dev"
source: hosted
version: "1.1.0"
web_socket:
dependency: transitive
description:
name: web_socket
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
url: "https://pub.dev"
source: hosted
version: "0.1.6"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
webkit_inspection_protocol:
dependency: transitive
description:
name: webkit_inspection_protocol
sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
yaml:
dependency: transitive
description:
name: yaml
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
url: "https://pub.dev"
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.4.0 <4.0.0"

18
dart/pubspec.yaml Normal file
View File

@ -0,0 +1,18 @@
name: dartHello
version: 0.0.1
description: >-
A super simple example of calling C code from Dart with FFI
# This example isn't intended for publishing on pub.dev.
publish_to: none
environment:
sdk: ^3.4.0
dependencies:
path: ^1.9.0
ffi: ^1.0.0
dev_dependencies:
lints: ^4.0.0
test: ^1.25.0

View File

@ -0,0 +1,12 @@
cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
project(ruapu_library VERSION 1.0.0 LANGUAGES C)
add_library(ruapu_library SHARED ruapu.c ruapu.def)
include_directories(../../)
set_target_properties(ruapu_library PROPERTIES
PUBLIC_HEADER ../../ruapu.h
VERSION ${PROJECT_VERSION}
SOVERSION 1
OUTPUT_NAME "ruapu"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Hex_Identity_ID_Goes_Here"
)

3
dart/ruapu-api/ruapu.c Normal file
View File

@ -0,0 +1,3 @@
#define RUAPU_IMPLEMENTATION
#include "ruapu.h"

5
dart/ruapu-api/ruapu.def Normal file
View File

@ -0,0 +1,5 @@
LIBRARY ruapu
EXPORTS
ruapu_rua
ruapu_supports
ruapu_init

63
dart/ruapu_api.dart Normal file
View File

@ -0,0 +1,63 @@
import 'dart:ffi'; // dart:ffi
import 'package:ffi/ffi.dart';
typedef RuapuRUA_C = Pointer<Pointer<Utf8>> Function();
typedef RuapuRUA_Dart = Pointer<Pointer<Utf8>> Function();
typedef RuapuInit_C = Void Function();
typedef RuapuInit_Dart = void Function();
typedef RuapuSupports_C = Int32 Function(Pointer<Utf8>);
typedef RuapuSupports_Dart = int Function(Pointer<Utf8>);
class Ruapu {
final DynamicLibrary _nativeLib;
Ruapu(String libraryPath) : _nativeLib = DynamicLibrary.open(libraryPath);
///
void init() {
final RuapuInit_Dart ruapu_init = _nativeLib
.lookup<NativeFunction<RuapuInit_C>>('ruapu_init')
.asFunction();
ruapu_init();
}
/// ISA列表
List<String> getRuapuISA() {
final RuapuRUA_Dart ruapu_rua = _nativeLib
.lookup<NativeFunction<RuapuRUA_C>>('ruapu_rua')
.asFunction();
Pointer<Pointer<Utf8>> result = ruapu_rua();
List<String> isas = [];
int index = 0;
while (true) {
Pointer<Utf8> strPtr = result.elementAt(index).value;
if (strPtr.address == 0) break; //
String str = strPtr.toDartString();
isas.add(str);
index++;
}
return isas;
}
/// ISA
bool supportsISA(String isa) {
final Pointer<Utf8> cIsa = isa.toNativeUtf8();
final RuapuSupports_Dart ruapu_supports = _nativeLib
.lookup<NativeFunction<RuapuSupports_C>>('ruapu_supports')
.asFunction();
int result = ruapu_supports(cIsa);
malloc.free(cIsa);
return result != 0;
}
}