{"id":12358,"date":"2024-03-14T15:40:48","date_gmt":"2024-03-14T15:40:48","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/"},"modified":"2025-08-05T00:33:57","modified_gmt":"2025-08-05T00:33:57","slug":"how-to-invoke-dll-library-functions-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/","title":{"rendered":"Call DLL Functions in C++ Guide"},"content":{"rendered":"<p>In C++, you can call a DLL library function using the following steps:<\/p>\n<ol>\n<li>You need to include the header file: to begin with, you need to include the header file of the DLL library. The header file typically contains the declarations and definitions of functions in the DLL library.<\/li>\n<li>Load DLL: Utilize the LoadLibrary function to load the DLL. This function will return a handle to the DLL.<\/li>\n<li>To obtain the function address: use the GetProcAddress function to retrieve the address of the function to be called. This function requires the handle of the DLL library and the function name to be passed in.<\/li>\n<li>Call the function: Obtain the function address and cast it to the correct function pointer type, then call the function through that pointer.<\/li>\n<li>Unload DLL library: Remove the loaded DLL library using the FreeLibrary function.<\/li>\n<\/ol>\n<p>Here is an example code:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;iostream&gt;<\/span><\/span>\r\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;Windows.h&gt;<\/span><\/span>\r\n\r\n<span class=\"hljs-comment\">\/\/ \u58f0\u660eDLL\u5e93\u4e2d\u7684\u51fd\u6570<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">typedef<\/span> <span class=\"hljs-title\">int<\/span> <span class=\"hljs-params\">(*AddFunc)<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span>, <span class=\"hljs-type\">int<\/span>)<\/span><\/span>;\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u52a0\u8f7dDLL\u5e93<\/span>\r\n    HINSTANCE hDLL = <span class=\"hljs-built_in\">LoadLibrary<\/span>(<span class=\"hljs-built_in\">TEXT<\/span>(<span class=\"hljs-string\">\"mydll.dll\"<\/span>));\r\n\r\n    <span class=\"hljs-keyword\">if<\/span> (hDLL != <span class=\"hljs-literal\">NULL<\/span>) {\r\n        <span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u51fd\u6570\u5730\u5740<\/span>\r\n        AddFunc add = (AddFunc)<span class=\"hljs-built_in\">GetProcAddress<\/span>(hDLL, <span class=\"hljs-string\">\"add\"<\/span>);\r\n\r\n        <span class=\"hljs-keyword\">if<\/span> (add != <span class=\"hljs-literal\">NULL<\/span>) {\r\n            <span class=\"hljs-comment\">\/\/ \u8c03\u7528\u51fd\u6570<\/span>\r\n            <span class=\"hljs-type\">int<\/span> result = <span class=\"hljs-built_in\">add<\/span>(<span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">5<\/span>);\r\n            std::cout &lt;&lt; <span class=\"hljs-string\">\"Result: \"<\/span> &lt;&lt; result &lt;&lt; std::endl;\r\n        } <span class=\"hljs-keyword\">else<\/span> {\r\n            std::cout &lt;&lt; <span class=\"hljs-string\">\"Failed to get function address.\"<\/span> &lt;&lt; std::endl;\r\n        }\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u5378\u8f7dDLL\u5e93<\/span>\r\n        <span class=\"hljs-built_in\">FreeLibrary<\/span>(hDLL);\r\n    } <span class=\"hljs-keyword\">else<\/span> {\r\n        std::cout &lt;&lt; <span class=\"hljs-string\">\"Failed to load DLL library.\"<\/span> &lt;&lt; std::endl;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>In the above code, the DLL library named mydll.dll was first loaded using the LoadLibrary function. Then the address of the add function in mydll.dll was obtained using the GetProcAddress function and converted to a function pointer type AddFunc. Finally, the add function was called using this function pointer and the result was printed. Afterwards, the DLL library was unloaded using the FreeLibrary function. It is important to ensure that the function declaration and definition in the code match those in the DLL library.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C++, you can call a DLL library function using the following steps: You need to include the header file: to begin with, you need to include the header file of the DLL library. The header file typically contains the declarations and definitions of functions in the DLL library. Load DLL: Utilize the LoadLibrary function [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[16153,16156,16155,16154,7040],"class_list":["post-12358","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-c-dll","tag-dynamic-linking","tag-getprocaddress","tag-loadlibrary","tag-windows-api"],"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>Call DLL Functions in C++ Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to invoke DLL functions in C++: Load libraries, get addresses &amp; execute functions with step-by-step examples.\" \/>\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-to-invoke-dll-library-functions-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Call DLL Functions in C++ Guide\" \/>\n<meta property=\"og:description\" content=\"Learn how to invoke DLL functions in C++: Load libraries, get addresses &amp; execute functions with step-by-step examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/\" \/>\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-14T15:40:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-05T00:33:57+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=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"Call DLL Functions in C++ Guide\",\"datePublished\":\"2024-03-14T15:40:48+00:00\",\"dateModified\":\"2025-08-05T00:33:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/\"},\"wordCount\":236,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"C++ DLL\",\"dynamic linking\",\"GetProcAddress\",\"LoadLibrary\",\"Windows API\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/\",\"name\":\"Call DLL Functions in C++ Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T15:40:48+00:00\",\"dateModified\":\"2025-08-05T00:33:57+00:00\",\"description\":\"Learn how to invoke DLL functions in C++: Load libraries, get addresses & execute functions with step-by-step examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Call DLL Functions in C++ Guide\"}]},{\"@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":"Call DLL Functions in C++ Guide - Blog - Silicon Cloud","description":"Learn how to invoke DLL functions in C++: Load libraries, get addresses & execute functions with step-by-step examples.","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-to-invoke-dll-library-functions-in-c\/","og_locale":"en_US","og_type":"article","og_title":"Call DLL Functions in C++ Guide","og_description":"Learn how to invoke DLL functions in C++: Load libraries, get addresses & execute functions with step-by-step examples.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T15:40:48+00:00","article_modified_time":"2025-08-05T00:33:57+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":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"Call DLL Functions in C++ Guide","datePublished":"2024-03-14T15:40:48+00:00","dateModified":"2025-08-05T00:33:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/"},"wordCount":236,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["C++ DLL","dynamic linking","GetProcAddress","LoadLibrary","Windows API"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/","name":"Call DLL Functions in C++ Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T15:40:48+00:00","dateModified":"2025-08-05T00:33:57+00:00","description":"Learn how to invoke DLL functions in C++: Load libraries, get addresses & execute functions with step-by-step examples.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-invoke-dll-library-functions-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Call DLL Functions in C++ Guide"}]},{"@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\/12358","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=12358"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/12358\/revisions"}],"predecessor-version":[{"id":156148,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/12358\/revisions\/156148"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=12358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=12358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=12358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}