{"id":3243,"date":"2022-05-14T11:41:54","date_gmt":"2022-05-14T09:41:54","guid":{"rendered":"https:\/\/store.algosyntax.com\/?post_type=asx-lms-tutorial-cpt&#038;p=3243"},"modified":"2026-03-09T07:34:09","modified_gmt":"2026-03-09T05:34:09","slug":"ue5-lnk2001-unresolved-external-symbol-solution","status":"publish","type":"asx-lms-tutorial-cpt","link":"https:\/\/store.algosyntax.com\/tutorials\/unreal-engine\/ue5-lnk2001-unresolved-external-symbol-solution\/","title":{"rendered":"UE5 LNK2001 unresolved external symbol Solution"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3243\" class=\"elementor elementor-3243\" data-elementor-post-type=\"asx-lms-tutorial-cpt\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bdc6d47 e-con-full e-flex e-con e-parent\" data-id=\"bdc6d47\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-381cbf4 elementor-widget elementor-widget-text-editor\" data-id=\"381cbf4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Here&#8217;s how to solve unreal engine unresolved external symbol error:<\/p><p><a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/error-messages\/tool-errors\/linker-tools-error-lnk2001?view=msvc-170\" target=\"_blank\" rel=\"noopener\">LNK2001 error<\/a> is thrown by Visual Studio Linker after the developer has attempted to inherit from or use a class that&#8217;s not in the module dependency list. It is a C++ Linker error meaning that the linker failed to find either the .cpp or .obj needed to link. The developer has to make sure to include all the <strong>modules<\/strong> containing the code that is referenced by his CPP files. Follow this simple step-by-step tutorial to solve it.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e3503b elementor-widget elementor-widget-heading\" data-id=\"7e3503b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Example Error Line.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-072a001 elementor-widget elementor-widget-text-editor\" data-id=\"072a001\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>LNK2001 unresolved external symbol<\/strong> &#8220;public: virtual enum EMovieSceneServerClientMask __cdecl <strong>UMovieSceneSequence::<\/strong>OverrideNetworkMask(enum EMovieSceneServerClientMask)const &#8230; etc.<br \/><br \/>This tutorial also applies for <strong>Error LNK2019\u00a0<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f0ba134 elementor-widget elementor-widget-heading\" data-id=\"f0ba134\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How to solve it<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c5a9e5 elementor-widget elementor-widget-text-editor\" data-id=\"3c5a9e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol>\n <li>\n<h3>Read Error Code To Get The Class Causing The Error<\/h3>\n<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-adf9e2c elementor-widget elementor-widget-image\" data-id=\"adf9e2c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"984\" height=\"184\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/tutorials\/unreal-engine\/unreal-build-tool\/ue5-lnk2001-error-solution-step-1.png\" class=\"attachment-large size-large wp-image-3344\" alt=\"UE5 LNK2001 Error Solution Step 1\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9630400 elementor-widget elementor-widget-text-editor\" data-id=\"9630400\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The unreal engine unresolved external symbol error usually contains a <strong>class name<\/strong> followed by the <strong>function<\/strong> the Linker can&#8217;t find. In this unreal engine tutorial, we are mostly interested in the <strong>class<\/strong>.\u00a0 Copy it and follow on. I have highlighted the class in our example error.\u00a0 These errors seem cryptic at first encounter. You just need to know where to look and ignore the rest. In some cases, only the function is reported without the class. That is still fine, we can use that too.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d41a09d elementor-widget elementor-widget-text-editor\" data-id=\"d41a09d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol start=2>\n \t<li>\n<h3>Locate the class in the unreal engine documentation<\/h3>\n<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ebc9975 elementor-widget elementor-widget-text-editor\" data-id=\"ebc9975\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Most of the time, googling the class will lead you straight to the documentation page about the class on the unreal engine website. What we are looking for in the documentation page is the module name that this class belongs to. Googling the class is the fastest and easiest way I recommend to find the class. In our example we would be searching for\u00a0 &#8220;<a href=\"https:\/\/docs.unrealengine.com\/4.26\/en-US\/API\/Runtime\/MovieScene\/UMovieSceneSequence\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #00ccff;\"><strong>UMovieSceneSequence<\/strong><\/span><\/a>&#8221;\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b747ad1 elementor-widget elementor-widget-text-editor\" data-id=\"b747ad1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Sometimes though, rarely, you will not be able to find through Google or website. What you can do, is use the Find in Files Function of visual studio and search for the Class definition. We are interested in the header file where this class is defined.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-698af86 elementor-widget elementor-widget-image\" data-id=\"698af86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/tutorials\/unreal-engine\/unreal-build-tool\/ue5-lnk2001-how-to-use-find-in-files-for-class.png\" title=\"\" alt=\"UE5 LNK2001 How to use Find In Files for class\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a666e4f elementor-widget elementor-widget-text-editor\" data-id=\"a666e4f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol start=\"3\">\n \t<li>\n<h3>Find the module in the unreal engine documentation<\/h3>\n<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e791c45 elementor-widget elementor-widget-text-editor\" data-id=\"e791c45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>At this point, you are either on the documentation page of the class or on the header file. We need to spot and copy the module name from here.\u00a0<\/p><p>On the documentation page\/website the module we need to add to the build path is usually listed under &#8220;References&#8221;. In our example, we determined the missing module&#8217;s name to be <a href=\"https:\/\/docs.unrealengine.com\/4.26\/en-US\/API\/Runtime\/MovieScene\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #00ccff;\"><strong>MovieScene<\/strong><\/span><\/a> See the image below:.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd48c1f elementor-widget elementor-widget-image\" data-id=\"bd48c1f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1077\" height=\"985\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/tutorials\/unreal-engine\/unreal-build-tool\/ue5-how-to-locate-class-module-on-documentation-page.png\" class=\"attachment-full size-full wp-image-3332\" alt=\"UE5 How to locate class module on documentation page\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f63b4c elementor-widget elementor-widget-text-editor\" data-id=\"3f63b4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Alternatively, If you&#8217;re on the header file, all you need to do is look at the on-disk path of the header file. The name we need is usually what appears after &#8220;Engine\/Source\/Runtime\/&#8221;. See the image below:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0e70551 elementor-widget elementor-widget-image\" data-id=\"0e70551\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"731\" height=\"357\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/tutorials\/unreal-engine\/unreal-build-tool\/ue5-lnk2001-how-to-find-required-module.png\" class=\"attachment-full size-full wp-image-3331\" alt=\"UE5 LNK2001 How to find required module\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-70c5d88 elementor-widget elementor-widget-text-editor\" data-id=\"70c5d88\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol start=\"4\">\n \t<li>\n<h3>Add the module to the project&#8217;s Build.cs file<\/h3>\n<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-535dfe5 elementor-widget elementor-widget-text-editor\" data-id=\"535dfe5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Final Step: We copy the module name and it to the <strong>PrivateDependencyModuleNames. <\/strong>Here is an example entry.<\/p><p>\u00a0<\/p><p><em>PrivateDependencyModuleNames.AddRange(new string[] { &#8220;LevelSequence&#8221; , &#8220;<span style=\"color: #00ccff;\"><strong>MovieScene<\/strong><\/span>&#8221; });<\/em><\/p><p>\u00a0<\/p><p>At this point you may be wondering what&#8217;s the difference between UE5 <strong>PrivateDependencyModuleNames<\/strong> and the <strong>PublicDependencyModuleNames.\u00a0<\/strong>You can learn more about the difference in our Plugin Development Course.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fe6f25b elementor-widget elementor-widget-image\" data-id=\"fe6f25b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"236\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/tutorials\/unreal-engine\/unreal-build-tool\/ue5-add-a-module-to-buildcs-file.png\" class=\"attachment-full size-full wp-image-3330\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9739667 elementor-widget elementor-widget-text-editor\" data-id=\"9739667\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>That Should be it. Now when you rebuild the unreal engine unresolved external symbol error will be solved. If it doesn&#8217;t read the note about classes that use MinimalAPI<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66473cb elementor-widget elementor-widget-heading\" data-id=\"66473cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">UCLASS WITH MINIMAL API<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a332336 elementor-widget elementor-widget-text-editor\" data-id=\"a332336\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>You might also encounter the unresolved external symbol error if you inherit from a class that usess UCLASS(MinimalAPI) specifier.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d7b32c2 elementor-widget elementor-widget-text-editor\" data-id=\"d7b32c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Classes with this specifier are generally not meant to be inherited. So the advice is to wrap the class as an object&#8230;<br \/><br \/>Alternatively you can edit the source and remove the &#8220;MinimapAPI&#8221; specifier but wouldn&#8217;t recommend it.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":3244,"template":"","asx-lms-tutorial-categories":[48,45],"asx-lms-tutorial-tags":[46,54],"class_list":["post-3243","asx-lms-tutorial-cpt","type-asx-lms-tutorial-cpt","status-publish","has-post-thumbnail","hentry","asx-lms-tutorial-categories-unreal-build-tool","asx-lms-tutorial-categories-unreal-engine","asx-lms-tutorial-tags-cpp","asx-lms-tutorial-tags-visual-studio","entry","has-media"],"acf":[],"_links":{"self":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-cpt\/3243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-cpt"}],"about":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/types\/asx-lms-tutorial-cpt"}],"version-history":[{"count":0,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-cpt\/3243\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media\/3244"}],"wp:attachment":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media?parent=3243"}],"wp:term":[{"taxonomy":"asx-lms-tutorial-categories","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-categories?post=3243"},{"taxonomy":"asx-lms-tutorial-tags","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-tags?post=3243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}