{"id":347,"date":"2025-02-05T12:00:31","date_gmt":"2025-02-05T04:00:31","guid":{"rendered":"http:\/\/blog.yfstudio.online\/?p=347"},"modified":"2026-02-19T18:46:39","modified_gmt":"2026-02-19T10:46:39","slug":"dart-%e4%bd%bf%e7%94%a8%e5%8a%a8%e6%80%81%e9%93%be%e6%8e%a5%e5%ba%93","status":"publish","type":"post","link":"http:\/\/blog.yfstudio.online\/?p=347","title":{"rendered":"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p>&#24744;&#21487;&#20197;&#35775;&#38382; <a href=\"https:\/\/yzyf1312.github.io\/blogs\/Dart%20%E4%BD%BF%E7%94%A8%E5%8A%A8%E6%80%81%E9%93%BE%E6%8E%A5%E5%BA%93.html\">Github Pages<\/a> &#29256;&#26412;&#20197;&#33719;&#24471;&#19981;&#19968;&#26679;&#30340;&#20307;&#39564;&#12290;<\/p>\n<p>&#26412;&#25991;&#20351;&#29992; <code>ffigen<\/code> &#21253;&#20026; Dart &#29983;&#25104;&#21160;&#24577;&#38142;&#25509;&#24211;&#30340;&#32465;&#23450;&#12290;<\/p>\n<h2>&#21069;&#32622;&#30693;&#35782;<\/h2>\n<ol>\n<li>Dart &#24320;&#21457;&#22522;&#30784;<\/li>\n<li>Go &#24320;&#21457;&#22522;&#30784;<\/li>\n<li>&#21160;&#24577;&#38142;&#25509;&#24211;&#27010;&#24565;<\/li>\n<\/ol>\n<p>&#26412;&#25991;&#40664;&#35748;&#35835;&#32773;&#24050;&#32463;&#20102;&#35299;&#20197;&#19978;&#30693;&#35782;&#12290;&#33509;&#26410;&#20102;&#35299;&#65292;&#35831;&#35835;&#32773;&#33258;&#34892;&#26597;&#38405;&#36164;&#26009;&#12290;<\/p>\n<h2>&#31034;&#20363;<\/h2>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#20351;&#29992; Go &#35821;&#35328;&#29983;&#25104;&#21160;&#24577;&#38142;&#25509;&#24211;&#24182;&#20351;&#29992; Dart &#35843;&#29992;&#20854;&#23548;&#20986;&#30340;&#20989;&#25968;&#30340;&#31034;&#20363;&#12290;<\/p>\n<h3>&#29615;&#22659;<\/h3>\n<ul>\n<li>&#31995;&#32479;\n<ul>\n<li>&#29256;&#26412;&#65306;Windows 10 &#19987;&#19994;&#24037;&#20316;&#31449;&#29256;<\/li>\n<li>&#25805;&#20316;&#31995;&#32479;&#20869;&#37096;&#29256;&#26412;&#65306;19045.3803<\/li>\n<\/ul>\n<\/li>\n<li>&#24320;&#21457;&#29615;&#22659;\n<ul>\n<li>Go &#65306;<code>go1.23.2 windows\/amd64<\/code><\/li>\n<li>Dart &#65306;<code>3.6.1 (stable) (Tue Jan 7 09:50:00 2025 -0800) on \"windows_x64\"<\/code><\/li>\n<li><code>ffi: ^2.1.3<\/code><\/li>\n<li><code>ffigen: ^15.0.0<\/code><\/li>\n<li>LLVM&#65306;<code>19.1.7<\/code><\/li>\n<li>&#23433;&#35013;&#36335;&#24452;&#65306;<code>D:\\App\\Runtime\\LLVM<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>&#23436;&#25972;&#27969;&#31243;<\/h3>\n<h4>Go &#37096;&#20998; - &#29983;&#25104;&#21160;&#24577;&#38142;&#25509;&#24211;<\/h4>\n<p>&#26032;&#24314;&#19968;&#20010;&#21517;&#20026; go-test &#30340;&#25991;&#20214;&#22841;&#12290;<\/p>\n<p>&#22312; go-test &#19979;&#36816;&#34892;&#25351;&#20196;&#65306;<\/p>\n<pre><code class=\"language-shell\">go mod init go-test<\/code><\/pre>\n<p>&#26032;&#24314;&#25991;&#20214; <code>main.go<\/code>&#65292;&#20869;&#23481;&#22914;&#19979;&#65306;<\/p>\n<pre><code class=\"language-go\">package main\n\nimport \"C\"\n\n\/\/export Add\nfunc Add(a, b int) int {\n    return a + b\n}\n\nfunc main() {}<\/code><\/pre>\n<p>&#20445;&#23384;&#21518; <code>main.go<\/code> &#21518;&#36816;&#34892;&#25351;&#20196;&#65306;<\/p>\n<pre><code class=\"language-shell\">go build -o add.dll -buildmode=c-shared main.go<\/code><\/pre>\n<p>&#27492;&#26102; go-test &#19979;&#30340;&#32467;&#26500;&#22914;&#19979;&#65306;<\/p>\n<pre><code class=\"language-shell\">.\n&#9500;&#9472;&#9472; add.dll\n&#9500;&#9472;&#9472; add.h\n&#9500;&#9472;&#9472; go.mod\n&#9500;&#9472;&#9472; main.go\n\n0 directories, 4 files<\/code><\/pre>\n<p>&#33267;&#27492;&#65292;Go &#37096;&#20998;&#21363;&#21160;&#24577;&#38142;&#25509;&#24211;&#30340;&#29983;&#25104;&#24050;&#32463;&#23436;&#25104;&#65292;&#25509;&#19979;&#26469;&#23601;&#26159; Dart &#37096;&#20998;&#21363;&#21160;&#24577;&#38142;&#25509;&#24211;&#30340;&#35843;&#29992;&#12290;<\/p>\n<h4>Dart &#37096;&#20998; - &#35843;&#29992;&#21160;&#24577;&#38142;&#25509;&#24211;<\/h4>\n<p>&#26032;&#24314;&#19968;&#20010;&#21517;&#20026; ffi_test &#30340;&#25991;&#20214;&#22841;&#12290;<\/p>\n<p>&#22312; ffi_test &#19979;&#36816;&#34892;&#25351;&#20196;&#65306;<\/p>\n<pre><code class=\"language-shell\">dart create . --force<\/code><\/pre>\n<p>&#20351;&#29992;&#20197;&#19979;&#25351;&#20196;&#23558; ffigen &#28155;&#21152;&#33267; dev_dependencies&#65306;<\/p>\n<pre><code class=\"language-shell\">dart pub add -d ffigen<\/code><\/pre>\n<p>&#23558;&#21069;&#38754;&#29983;&#25104;&#30340; <code>add.h<\/code> &#22797;&#21046;&#21040; <code>lib\/lib_headers<\/code> &#19979;&#12290;<\/p>\n<p>&#26032;&#24314;&#25991;&#20214; <code>ffigen.yaml<\/code>&#65292;&#20869;&#23481;&#22914;&#19979;&#65306;<\/p>\n<pre><code class=\"language-yaml\">name: GoAddLibAutoGen\noutput: 'lib\/goaddlib_bindings.dart'\nheaders:\n  entry-points:\n    - 'lib\/lib_headers\/add.h'\nllvm-path: ['D:\\\\App\\\\Runtime\\\\LLVM']<\/code><\/pre>\n<p>&#20445;&#23384; <code>ffigen.yaml<\/code> &#21518;&#36816;&#34892;&#25351;&#20196;&#65306;<\/p>\n<pre><code class=\"language-shell\">dart run ffigen --config ffigen.yaml<\/code><\/pre>\n<p>&#27492;&#26102; ffi_test &#19979;&#30340;&#32467;&#26500;&#22914;&#19979;&#65306;<\/p>\n<pre><code class=\"language-shell\">.\n&#9500;&#9472;&#9472; CHANGELOG.md\n&#9500;&#9472;&#9472; README.md\n&#9500;&#9472;&#9472; analysis_options.yaml\n&#9500;&#9472;&#9472; bin\n&#9474;&nbsp;&nbsp; &#9492;&#9472;&#9472; ffi_test.dart\n&#9500;&#9472;&#9472; ffigen.yaml\n&#9500;&#9472;&#9472; lib\n&#9474;&nbsp;&nbsp; &#9500;&#9472;&#9472; ffi_test.dart\n&#9474;&nbsp;&nbsp; &#9500;&#9472;&#9472; goaddlib_bindings.dart\n&#9474;&nbsp;&nbsp; &#9492;&#9472;&#9472; lib_headers\n&#9474;&nbsp;&nbsp;     &#9492;&#9472;&#9472; add.h\n&#9500;&#9472;&#9472; pubspec.lock\n&#9500;&#9472;&#9472; pubspec.yaml\n&#9492;&#9472;&#9472; test\n    &#9492;&#9472;&#9472; ffi_test_test.dart\n\n4 directories, 11 files<\/code><\/pre>\n<p>&#26032;&#24314;&#25991;&#20214; <code>lib\/ff.dart<\/code>&#65292;&#20869;&#23481;&#22914;&#19979;&#65306;<\/p>\n<pre><code class=\"language-dart\">import 'dart:ffi';\nimport 'dart:io';\nimport 'package:ffi_test\/goaddlib_bindings.dart' as goaddlib_bindings;\n\nList&lt;DynamicLibrary&gt; _libs4 = [\n  DynamicLibrary.open(Platform.isWindows ? \"add.dll\" : \"add.so\"),\n];\n\nPointer&lt;T&gt; _lookup&lt;T extends NativeType&gt;(String symbolName) {\n  for (final i in _libs4) {\n    if (i.providesSymbol(symbolName)) {\n      return i.lookup(symbolName);\n    }\n  }\n  throw Exception(\"can not find the symbol $symbolName from library\");\n}\n\nfinal ff = goaddlib_bindings.GoAddLibAutoGen.fromLookup(_lookup);<\/code><\/pre>\n<p>&#20445;&#23384; <code>lib\/ff.dart<\/code> &#21518;&#20462;&#25913; <code>bin\/ffi_test.dart<\/code>&#65292;&#20869;&#23481;&#22914;&#19979;&#65306;<\/p>\n<pre><code class=\"language-dart\">import 'package:ffi_test\/ffi_test.dart' as ffi_test;\nimport 'package:ffi_test\/ff.dart';\n\nvoid main(List&lt;String&gt; arguments) {\n  print('Hello world: ${ffi_test.calculate()}!');\n  print('ff.Add(1, 2): ${ff.Add(1, 2)}');\n}<\/code><\/pre>\n<p>&#20445;&#23384; <code>bin\/ffi_test.dart<\/code> &#21518;&#26032;&#24314;&#25991;&#20214;&#22841; <code>compile\/exe<\/code> &#24182;&#36816;&#34892;&#25351;&#20196;&#65306;<\/p>\n<pre><code class=\"language-shell\">dart compile exe .\\bin\\ffi_test.dart -o .\\compile\\exe\\ffi_test.exe<\/code><\/pre>\n<p>&#23558;&#21069;&#38754;&#29983;&#25104;&#30340; <code>add.dll<\/code> &#22797;&#21046;&#21040; <code>compile\/exe<\/code> &#19979;&#21518;&#65292;&#36816;&#34892;&#25351;&#20196;&#65306;<\/p>\n<pre><code class=\"language-shell\">.\\compile\\exe\\ffi_test.exe<\/code><\/pre>\n<p>&#27492;&#26102;&#21629;&#20196;&#34892;&#20013;&#20415;&#20250;&#36755;&#20986;&#65306;<\/p>\n<pre><code class=\"language-shell\">Hello world: 42!\nff.Add(1, 2): 3<\/code><\/pre>\n<h2>&#30456;&#20851;&#38142;&#25509;<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/llvm\/llvm-project\/releases\">Releases &middot; llvm\/llvm-project<\/a><\/li>\n<li><a href=\"https:\/\/go.dev\/dl\/\">All releases - The Go Programming Language<\/a><\/li>\n<li><a href=\"https:\/\/docs.flutter.dev\/release\/archive\">Archive - Flutter<\/a><\/li>\n<\/ul>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>&#24744;&#21487;&#20197;&#35775;&#38382; Github Pages &#038;&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-347","post","type-post","status-publish","format-standard","hentry","category-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93 - \u4f9d\u51e1\u7684 Wordpress<\/title>\n<meta name=\"description\" content=\"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728 Dart \u4e2d\u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\u3002\u901a\u8fc7 Go \u8bed\u8a00\u7f16\u5199\u4ee3\u7801\u5e76\u751f\u6210 DLL \u6587\u4ef6\uff0c\u518d\u5229\u7528 Dart \u7684 ffi \u548c ffigen \u5305\u751f\u6210\u7ed1\u5b9a\u6587\u4ef6\u5e76\u8c03\u7528 DLL \u4e2d\u7684\u51fd\u6570\u3002\u6574\u4e2a\u6d41\u7a0b\u5305\u62ec Go \u7684\u7f16\u8bd1\u751f\u6210 DLL\u3001Dart \u7684\u9879\u76ee\u642d\u5efa\u3001\u7ed1\u5b9a\u6587\u4ef6\u751f\u6210\u4ee5\u53ca\u6700\u7ec8\u7684\u8c03\u7528\u5b9e\u73b0\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blog.yfstudio.online\/?p=347\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93 - \u4f9d\u51e1\u7684 Wordpress\" \/>\n<meta property=\"og:description\" content=\"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728 Dart \u4e2d\u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\u3002\u901a\u8fc7 Go \u8bed\u8a00\u7f16\u5199\u4ee3\u7801\u5e76\u751f\u6210 DLL \u6587\u4ef6\uff0c\u518d\u5229\u7528 Dart \u7684 ffi \u548c ffigen \u5305\u751f\u6210\u7ed1\u5b9a\u6587\u4ef6\u5e76\u8c03\u7528 DLL \u4e2d\u7684\u51fd\u6570\u3002\u6574\u4e2a\u6d41\u7a0b\u5305\u62ec Go \u7684\u7f16\u8bd1\u751f\u6210 DLL\u3001Dart \u7684\u9879\u76ee\u642d\u5efa\u3001\u7ed1\u5b9a\u6587\u4ef6\u751f\u6210\u4ee5\u53ca\u6700\u7ec8\u7684\u8c03\u7528\u5b9e\u73b0\u3002\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blog.yfstudio.online\/?p=347\" \/>\n<meta property=\"og:site_name\" content=\"\u4f9d\u51e1\u7684 Wordpress\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-05T04:00:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-19T10:46:39+00:00\" \/>\n<meta name=\"author\" content=\"\u4f9d\u51e1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u4f9d\u51e1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/blog.yfstudio.online\/?p=347#article\",\"isPartOf\":{\"@id\":\"http:\/\/blog.yfstudio.online\/?p=347\"},\"author\":{\"name\":\"\u4f9d\u51e1\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08\"},\"headline\":\"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\",\"datePublished\":\"2025-02-05T04:00:31+00:00\",\"dateModified\":\"2026-02-19T10:46:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/blog.yfstudio.online\/?p=347\"},\"wordCount\":43,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#organization\"},\"articleSection\":[\"\u7f16\u7a0b\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/blog.yfstudio.online\/?p=347#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/blog.yfstudio.online\/?p=347\",\"url\":\"http:\/\/blog.yfstudio.online\/?p=347\",\"name\":\"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93 - \u4f9d\u51e1\u7684 Wordpress\",\"isPartOf\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#website\"},\"datePublished\":\"2025-02-05T04:00:31+00:00\",\"dateModified\":\"2026-02-19T10:46:39+00:00\",\"description\":\"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728 Dart \u4e2d\u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\u3002\u901a\u8fc7 Go \u8bed\u8a00\u7f16\u5199\u4ee3\u7801\u5e76\u751f\u6210 DLL \u6587\u4ef6\uff0c\u518d\u5229\u7528 Dart \u7684 ffi \u548c ffigen \u5305\u751f\u6210\u7ed1\u5b9a\u6587\u4ef6\u5e76\u8c03\u7528 DLL \u4e2d\u7684\u51fd\u6570\u3002\u6574\u4e2a\u6d41\u7a0b\u5305\u62ec Go \u7684\u7f16\u8bd1\u751f\u6210 DLL\u3001Dart \u7684\u9879\u76ee\u642d\u5efa\u3001\u7ed1\u5b9a\u6587\u4ef6\u751f\u6210\u4ee5\u53ca\u6700\u7ec8\u7684\u8c03\u7528\u5b9e\u73b0\u3002\",\"breadcrumb\":{\"@id\":\"http:\/\/blog.yfstudio.online\/?p=347#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/blog.yfstudio.online\/?p=347\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/blog.yfstudio.online\/?p=347#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"http:\/\/blog.yfstudio.online\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/blog.yfstudio.online\/#website\",\"url\":\"http:\/\/blog.yfstudio.online\/\",\"name\":\"\u4f9d\u51e1\u7684 Wordpress\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/blog.yfstudio.online\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/blog.yfstudio.online\/#organization\",\"name\":\"YFStudio\",\"url\":\"http:\/\/blog.yfstudio.online\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png\",\"contentUrl\":\"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png\",\"width\":1600,\"height\":800,\"caption\":\"YFStudio\"},\"image\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/space.bilibili.com\/549933280\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08\",\"name\":\"\u4f9d\u51e1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422\",\"contentUrl\":\"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422\",\"caption\":\"\u4f9d\u51e1\"},\"sameAs\":[\"http:\/\/blog.yfstudio.online\"],\"url\":\"http:\/\/blog.yfstudio.online\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93 - \u4f9d\u51e1\u7684 Wordpress","description":"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728 Dart \u4e2d\u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\u3002\u901a\u8fc7 Go \u8bed\u8a00\u7f16\u5199\u4ee3\u7801\u5e76\u751f\u6210 DLL \u6587\u4ef6\uff0c\u518d\u5229\u7528 Dart \u7684 ffi \u548c ffigen \u5305\u751f\u6210\u7ed1\u5b9a\u6587\u4ef6\u5e76\u8c03\u7528 DLL \u4e2d\u7684\u51fd\u6570\u3002\u6574\u4e2a\u6d41\u7a0b\u5305\u62ec Go \u7684\u7f16\u8bd1\u751f\u6210 DLL\u3001Dart \u7684\u9879\u76ee\u642d\u5efa\u3001\u7ed1\u5b9a\u6587\u4ef6\u751f\u6210\u4ee5\u53ca\u6700\u7ec8\u7684\u8c03\u7528\u5b9e\u73b0\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blog.yfstudio.online\/?p=347","og_locale":"zh_CN","og_type":"article","og_title":"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93 - \u4f9d\u51e1\u7684 Wordpress","og_description":"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728 Dart \u4e2d\u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\u3002\u901a\u8fc7 Go \u8bed\u8a00\u7f16\u5199\u4ee3\u7801\u5e76\u751f\u6210 DLL \u6587\u4ef6\uff0c\u518d\u5229\u7528 Dart \u7684 ffi \u548c ffigen \u5305\u751f\u6210\u7ed1\u5b9a\u6587\u4ef6\u5e76\u8c03\u7528 DLL \u4e2d\u7684\u51fd\u6570\u3002\u6574\u4e2a\u6d41\u7a0b\u5305\u62ec Go \u7684\u7f16\u8bd1\u751f\u6210 DLL\u3001Dart \u7684\u9879\u76ee\u642d\u5efa\u3001\u7ed1\u5b9a\u6587\u4ef6\u751f\u6210\u4ee5\u53ca\u6700\u7ec8\u7684\u8c03\u7528\u5b9e\u73b0\u3002","og_url":"http:\/\/blog.yfstudio.online\/?p=347","og_site_name":"\u4f9d\u51e1\u7684 Wordpress","article_published_time":"2025-02-05T04:00:31+00:00","article_modified_time":"2026-02-19T10:46:39+00:00","author":"\u4f9d\u51e1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u4f9d\u51e1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blog.yfstudio.online\/?p=347#article","isPartOf":{"@id":"http:\/\/blog.yfstudio.online\/?p=347"},"author":{"name":"\u4f9d\u51e1","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08"},"headline":"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93","datePublished":"2025-02-05T04:00:31+00:00","dateModified":"2026-02-19T10:46:39+00:00","mainEntityOfPage":{"@id":"http:\/\/blog.yfstudio.online\/?p=347"},"wordCount":43,"commentCount":0,"publisher":{"@id":"http:\/\/blog.yfstudio.online\/#organization"},"articleSection":["\u7f16\u7a0b"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blog.yfstudio.online\/?p=347#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blog.yfstudio.online\/?p=347","url":"http:\/\/blog.yfstudio.online\/?p=347","name":"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93 - \u4f9d\u51e1\u7684 Wordpress","isPartOf":{"@id":"http:\/\/blog.yfstudio.online\/#website"},"datePublished":"2025-02-05T04:00:31+00:00","dateModified":"2026-02-19T10:46:39+00:00","description":"\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728 Dart \u4e2d\u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93\u3002\u901a\u8fc7 Go \u8bed\u8a00\u7f16\u5199\u4ee3\u7801\u5e76\u751f\u6210 DLL \u6587\u4ef6\uff0c\u518d\u5229\u7528 Dart \u7684 ffi \u548c ffigen \u5305\u751f\u6210\u7ed1\u5b9a\u6587\u4ef6\u5e76\u8c03\u7528 DLL \u4e2d\u7684\u51fd\u6570\u3002\u6574\u4e2a\u6d41\u7a0b\u5305\u62ec Go \u7684\u7f16\u8bd1\u751f\u6210 DLL\u3001Dart \u7684\u9879\u76ee\u642d\u5efa\u3001\u7ed1\u5b9a\u6587\u4ef6\u751f\u6210\u4ee5\u53ca\u6700\u7ec8\u7684\u8c03\u7528\u5b9e\u73b0\u3002","breadcrumb":{"@id":"http:\/\/blog.yfstudio.online\/?p=347#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blog.yfstudio.online\/?p=347"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/blog.yfstudio.online\/?p=347#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/blog.yfstudio.online\/"},{"@type":"ListItem","position":2,"name":"Dart \u4f7f\u7528\u52a8\u6001\u94fe\u63a5\u5e93"}]},{"@type":"WebSite","@id":"http:\/\/blog.yfstudio.online\/#website","url":"http:\/\/blog.yfstudio.online\/","name":"\u4f9d\u51e1\u7684 Wordpress","description":"","publisher":{"@id":"http:\/\/blog.yfstudio.online\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/blog.yfstudio.online\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"http:\/\/blog.yfstudio.online\/#organization","name":"YFStudio","url":"http:\/\/blog.yfstudio.online\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/","url":"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png","contentUrl":"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png","width":1600,"height":800,"caption":"YFStudio"},"image":{"@id":"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/space.bilibili.com\/549933280"]},{"@type":"Person","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08","name":"\u4f9d\u51e1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/person\/image\/","url":"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422","contentUrl":"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422","caption":"\u4f9d\u51e1"},"sameAs":["http:\/\/blog.yfstudio.online"],"url":"http:\/\/blog.yfstudio.online\/?author=1"}]}},"_links":{"self":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts\/347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=347"}],"version-history":[{"count":4,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts\/347\/revisions"}],"predecessor-version":[{"id":503,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts\/347\/revisions\/503"}],"wp:attachment":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=347"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}