{"id":212,"date":"2021-01-23T09:20:12","date_gmt":"2021-01-23T01:20:12","guid":{"rendered":"http:\/\/liyanliang.net\/?p=212"},"modified":"2021-01-23T09:21:51","modified_gmt":"2021-01-23T01:21:51","slug":"loadlibrary%e5%92%8cgetprocaddress%e8%8e%b7%e5%8f%96%e5%8f%a6%e4%b8%80%e4%b8%aa%e9%a1%b9%e7%9b%ae%e4%b8%ad%e7%9a%84%e5%87%bd%e6%95%b0","status":"publish","type":"post","link":"http:\/\/liyanliang.net\/index.php\/2021\/01\/23\/loadlibrary%e5%92%8cgetprocaddress%e8%8e%b7%e5%8f%96%e5%8f%a6%e4%b8%80%e4%b8%aa%e9%a1%b9%e7%9b%ae%e4%b8%ad%e7%9a%84%e5%87%bd%e6%95%b0\/","title":{"rendered":"LoadLibrary\u548cGetProcAddress\u83b7\u53d6\u53e6\u4e00\u4e2a\u9879\u76ee\u4e2d\u7684\u51fd\u6570"},"content":{"rendered":"\n<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#NGeoXDataNGeoXGPSdllLevels\"><span class=\"toc_number toc_depth_1\">1<\/span> \u56e0\u4e3a\u9879\u76eeNGeoXData\u5728\u9879\u76eeNGeoXGPS\u4e4b\u524d\u7f16\u8bd1,\u6545\u901a\u8fc7\u52a0\u8f7ddll\u7684\u65b9\u6cd5\u83b7\u53d6\u8bbe\u8ba1\u5206\u6790\u7684Levels\u3002<\/a><\/li><li><a href=\"#1NGeoXDataCGPSDataMaincpp\"><span class=\"toc_number toc_depth_1\">2<\/span> \uff081\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CGPSDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a<\/a><\/li><li><a href=\"#2NGeoXDataCResultDataMainh\"><span class=\"toc_number toc_depth_1\">3<\/span> \uff082\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.h\u4e2d\u6dfb\u52a0\uff1a<\/a><\/li><li><a href=\"#3NGeoXDataCResultDataMaincpp\"><span class=\"toc_number toc_depth_1\">4<\/span> \uff083\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a<\/a><\/li><li><a href=\"#i\"><span class=\"toc_number toc_depth_1\">5<\/span> \u6269\u5c55\uff1a<\/a><\/li><li><a href=\"#Dependency_WalkerDll\"><span class=\"toc_number toc_depth_1\">6<\/span> \u4f7f\u7528Dependency Walker\u5de5\u5177\u67e5\u770bDll\u662f\u5426\u7f16\u8bd1\u8be5\u51fd\u6570\uff1a<\/a><\/li><li><a href=\"#1DubugWin32NGeoXGPSdll\"><span class=\"toc_number toc_depth_1\">7<\/span> \uff081\uff09\u627e\u5230\u9879\u76ee\u8def\u5f84Dubug\u4e0b\u7684Win32\u6587\u4ef6\u5939\u4e2d\u627e\u5230NGeoXGPS.dll\uff0c<\/a><\/li><li><a href=\"#2GetDesignModelLevelsGlobal_GetDesignModelLevelsGlobal0\"><span class=\"toc_number toc_depth_1\">8<\/span> \uff082\uff09\u67e5\u627eGetDesignModelLevelsGlobal\uff0c\u82e5\u7f16\u8bd1\u6210\u529f\uff0c\u4f1a\u4ea7\u751f\u7c7b\u4f3c\u8fd9\u6837\u7684\u51fd\u6570\uff1a_GetDesignModelLevelsGlobal@0<\/a><\/li><\/ul><\/div>\n<h5 class=\"wp-block-heading\"><span id=\"NGeoXDataNGeoXGPSdllLevels\">\u56e0\u4e3a\u9879\u76eeNGeoXData\u5728\u9879\u76eeNGeoXGPS\u4e4b\u524d\u7f16\u8bd1,\u6545\u901a\u8fc7\u52a0\u8f7ddll\u7684\u65b9\u6cd5\u83b7\u53d6\u8bbe\u8ba1\u5206\u6790\u7684Levels\u3002<\/span><\/h5>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"1NGeoXDataCGPSDataMaincpp\">\uff081\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CGPSDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a<\/span><\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include \"HeaderPre.h\"\nEXTERN_C __MY_EXT_CLASS__ int GetDesignModelLevelsGlobal()\n{\n \u00a0 \u00a0if (!CGPSDataMain::GetInstance())\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0return 0;\n \u00a0  }\n \u00a0 \u00a0CIntArray levelIndexArr;\n \u00a0 \u00a0return CGPSDataMain::GetInstance()->GetDesignModelLevels(levelIndexArr);\n}\n#include \"HeaderPost.h\"<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"2NGeoXDataCResultDataMainh\">\uff082\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.h\u4e2d\u6dfb\u52a0\uff1a<\/span><\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">typedef int (*GetDesignModelLevelsFun)();<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"3NGeoXDataCResultDataMaincpp\">\uff083\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a<\/span><\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CTypedPtrArray ResultDrawingGPSArr;\nHMODULE hXGPSHandle = ::LoadLibrary(\"NGeoXGPS.dll\"); \nif (hXGPSHandle)\n{\n \u00a0 \u00a0FARPROC pFun = GetProcAddress(hXGPSHandle, \"GetDesignModelLevelsGlobal\");\n \u00a0 \u00a0if (pFun)\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0GetDesignModelLevelsFun pGetFun = (GetDesignModelLevelsFun)pFun;\n \u00a0 \u00a0 \u00a0 \u00a0int levelCount = pGetFun();\n \u00a0 \u00a0 \u00a0 \u00a0CString strTitle;\n \u00a0 \u00a0 \u00a0 \u00a0for (int iLevel = 0; iLevel &amp;lt; levelCount; iLevel++)\n \u00a0 \u00a0 \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\n \u00a0 \u00a0 \u00a0  }\n\u200b\n &lt;code data-enlighter-language=\"cpp\" class=\"EnlighterJSRAW\">\u00a0  }\n}&lt;\/code>\n\u200b<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"i\">\u6269\u5c55\uff1a<\/span><\/h5>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"Dependency_WalkerDll\">\u4f7f\u7528Dependency Walker\u5de5\u5177\u67e5\u770bDll\u662f\u5426\u7f16\u8bd1\u8be5\u51fd\u6570\uff1a<\/span><\/h5>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"1DubugWin32NGeoXGPSdll\">\uff081\uff09\u627e\u5230\u9879\u76ee\u8def\u5f84Dubug\u4e0b\u7684Win32\u6587\u4ef6\u5939\u4e2d\u627e\u5230NGeoXGPS.dll\uff0c<\/span><\/h5>\n\n\n\n<p>\u5c06\u6587\u4ef6\u62d6\u62fd\u5230Dependency Walker\u754c\u9762\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20200904225149.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20200904225149.png\"><\/a><\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><span id=\"2GetDesignModelLevelsGlobal_GetDesignModelLevelsGlobal0\">\uff082\uff09\u67e5\u627eGetDesignModelLevelsGlobal\uff0c\u82e5\u7f16\u8bd1\u6210\u529f\uff0c\u4f1a\u4ea7\u751f\u7c7b\u4f3c\u8fd9\u6837\u7684\u51fd\u6570\uff1a_GetDesignModelLevelsGlobal@0<\/span><\/h5>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20200904225354.png\" alt=\"\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 \u56e0\u4e3a\u9879\u76eeNGeoXData\u5728\u9879\u76eeNGeoXGPS\u4e4b\u524d\u7f16\u8bd1,\u6545\u901a\u8fc7\u52a0\u8f7ddll\u7684\u65b9\u6cd5\u83b7\u53d6\u8bbe\u8ba1\u5206\u6790\u7684Levels\u30022 \uff081\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CGPSDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a3 \uff082\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.h\u4e2d\u6dfb\u52a0\uff1a4 \uff083\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a5 \u6269\u5c55\uff1a6 \u4f7f\u7528Dependency Walker\u5de5\u5177\u67e5\u770bDll\u662f\u5426\u7f16\u8bd1\u8be5\u51fd\u6570\uff1a7 \uff081\uff09\u627e\u5230\u9879\u76ee\u8def\u5f84Dubug\u4e0b\u7684Win32\u6587\u4ef6\u5939\u4e2d\u627e\u5230NGeoXGPS.dll\uff0c8 \uff082\uff09\u67e5\u627eGetDesignModelLevelsGlobal\uff0c\u82e5\u7f16\u8bd1\u6210\u529f\uff0c\u4f1a\u4ea7\u751f\u7c7b\u4f3c\u8fd9\u6837\u7684\u51fd\u6570\uff1a_GetDesignModelLevelsGlobal@0 \u56e0\u4e3a\u9879\u76eeNGeoXData\u5728\u9879\u76eeNGeoXGPS\u4e4b\u524d\u7f16\u8bd1,\u6545\u901a\u8fc7\u52a0\u8f7ddll\u7684\u65b9\u6cd5\u83b7\u53d6\u8bbe\u8ba1\u5206\u6790\u7684Levels\u3002 \uff081\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CGPSDataMain.cpp\u4e2d\u6dfb\u52a0\uff1a \uff082\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CResultDataMain.h\u4e2d\u6dfb\u52a0\uff1a \uff083\uff09\u5728\u9879\u76eeNGeoXData\u4e2d\u7684CR&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"http:\/\/liyanliang.net\/index.php\/2021\/01\/23\/loadlibrary%e5%92%8cgetprocaddress%e8%8e%b7%e5%8f%96%e5%8f%a6%e4%b8%80%e4%b8%aa%e9%a1%b9%e7%9b%ae%e4%b8%ad%e7%9a%84%e5%87%bd%e6%95%b0\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-212","post","type-post","status-publish","format-standard","hentry","category-c"],"_links":{"self":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts\/212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/comments?post=212"}],"version-history":[{"count":2,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts\/212\/revisions"}],"predecessor-version":[{"id":214,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts\/212\/revisions\/214"}],"wp:attachment":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/media?parent=212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/categories?post=212"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/tags?post=212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}