{"id":21141,"date":"2024-03-15T21:33:56","date_gmt":"2024-03-15T21:33:56","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/"},"modified":"2024-03-21T19:46:42","modified_gmt":"2024-03-21T19:46:42","slug":"how-can-we-call-a-c-language-shared-library-in-php","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/","title":{"rendered":"How can we call a C language shared library in PHP?"},"content":{"rendered":"<p>To call a C language .so dynamic library in PHP, you can utilize PHP&#8217;s FFI (Foreign Function Interface) extension.<\/p>\n<p>First, make sure your PHP version supports the FFI extension. Run &#8220;php -m&#8221; in the command line and check if FFI is included in the output.<\/p>\n<p>Next, create a PHP script that uses the FFI extension to load a .so dynamic library written in C language and call its functions. Here is an example:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">&lt;?php<\/span>\r\n<span class=\"hljs-variable\">$ffi<\/span> = FFI::<span class=\"hljs-title function_ invoke__\">cdef<\/span>(<span class=\"hljs-string\">\"\r\n    \/\/ \u5728\u8fd9\u91cc\u5b9a\u4e49C\u8bed\u8a00\u51fd\u6570\u7684\u7b7e\u540d\r\n    int add(int a, int b);\r\n\"<\/span>, <span class=\"hljs-string\">\"path\/to\/your\/library.so\"<\/span>);\r\n\r\n<span class=\"hljs-variable\">$result<\/span> = <span class=\"hljs-variable\">$ffi<\/span>-&gt;<span class=\"hljs-title function_ invoke__\">add<\/span>(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>);\r\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$result<\/span>;  <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\uff1a5<\/span>\r\n<span class=\"hljs-meta\">?&gt;<\/span>\r\n<\/code><\/pre>\n<p>In the example above, we first defined the signature of a C function using the FFI::cdef() function, then loaded the .so dynamic library using FFI(). Afterwards, we can call the C function directly using the $ffi object, similar to calling a PHP function.<\/p>\n<p>In the FFI::cdef() function, you must provide the signature of the C language function, which includes the function name and parameter types, as well as the path to the dynamic library. Within the parentheses after the function name, you can specify the types of parameters the function accepts, for example, int add(int a, int b) indicates that the add function takes two integer parameters and returns an integer result.<\/p>\n<p>Finally, by invoking $ffi->add(2, 3), we successfully called the C function add and assigned the result to the $result variable. Ultimately, we used the echo statement to output the result.<\/p>\n<p>Important points to note:<\/p>\n<ol>\n<li>You need to replace &#8220;path\/to\/your\/library.so&#8221; with the actual path to your .so dynamic library file.<\/li>\n<li>If your .so dynamic library depends on other libraries, you may need to set the LD_LIBRARY_PATH environment variable before loading to specify the search path for the dynamic library.<\/li>\n<\/ol>\n<p>I hope this example can help you successfully call the .so dynamic library in C language.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To call a C language .so dynamic library in PHP, you can utilize PHP&#8217;s FFI (Foreign Function Interface) extension. First, make sure your PHP version supports the FFI extension. Run &#8220;php -m&#8221; in the command line and check if FFI is included in the output. Next, create a PHP script that uses the FFI extension [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-21141","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How can we call a C language shared library in PHP? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How can we call a C language shared library in PHP?\" \/>\n<meta property=\"og:description\" content=\"To call a C language .so dynamic library in PHP, you can utilize PHP&#8217;s FFI (Foreign Function Interface) extension. First, make sure your PHP version supports the FFI extension. Run &#8220;php -m&#8221; in the command line and check if FFI is included in the output. Next, create a PHP script that uses the FFI extension [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T21:33:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T19:46:42+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"How can we call a C language shared library in PHP?\",\"datePublished\":\"2024-03-15T21:33:56+00:00\",\"dateModified\":\"2024-03-21T19:46:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\"},\"wordCount\":300,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\",\"name\":\"How can we call a C language shared library in PHP? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T21:33:56+00:00\",\"dateModified\":\"2024-03-21T19:46:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How can we call a C language shared library in PHP?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How can we call a C language shared library in PHP? - Blog - Silicon Cloud","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":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/","og_locale":"en_US","og_type":"article","og_title":"How can we call a C language shared library in PHP?","og_description":"To call a C language .so dynamic library in PHP, you can utilize PHP&#8217;s FFI (Foreign Function Interface) extension. First, make sure your PHP version supports the FFI extension. Run &#8220;php -m&#8221; in the command line and check if FFI is included in the output. Next, create a PHP script that uses the FFI extension [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T21:33:56+00:00","article_modified_time":"2024-03-21T19:46:42+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"How can we call a C language shared library in PHP?","datePublished":"2024-03-15T21:33:56+00:00","dateModified":"2024-03-21T19:46:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/"},"wordCount":300,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/","url":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/","name":"How can we call a C language shared library in PHP? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T21:33:56+00:00","dateModified":"2024-03-21T19:46:42+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-call-a-c-language-shared-library-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How can we call a C language shared library in PHP?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/21141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=21141"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/21141\/revisions"}],"predecessor-version":[{"id":54985,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/21141\/revisions\/54985"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=21141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=21141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=21141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}