bb107 / MemoryModulePP

MemoryModule which compatible with Win32 API and support exception handling
MIT License
341 stars 94 forks source link

关于从内存加载 sciter.dll 的问题 #4

Closed idigger closed 2 years ago

idigger commented 2 years ago

问一下,https://github.com/c-smile/sciter-js-sdk 项目的 sciter.dll 能否从内存中加载? 我试了一下,加载后运行失败了。

主要把sciter-x-api.h中的以下部分代码改成从内存加载

`#elif defined(WINDOWS)

inline ISciterAPI* _SAPI( ISciterAPI* ext ) {
   static ISciterAPI* _api = NULL;
   if( ext ) _api = ext;
   if( !_api )
   {
      HMODULE hm = LoadLibrary( TEXT("sciter.dll") );
      if(hm) {
        SciterAPI_ptr sciterAPI = (SciterAPI_ptr) GetProcAddress(hm, "SciterAPI");
        if( sciterAPI ) {
          _api = sciterAPI();
          //#if defined(__cplusplus) && !defined(PLAIN_API_ONLY)
          //              tiscript::ni( _api->TIScriptAPI() );
          //#endif
        } else {
          FreeLibrary(hm);
        }

      }
   }
   assert(_api);
   if( !_api ) {
     //::MessageBox(NULL, TEXT("Sciter engine not found, quiting"),TEXT("Error"),MB_OK);
     exit(-1);
   }
   return _api;
}

elif defined(OSX)

`

bb107 commented 2 years ago

你好。请重新检出 master 分支或者切换到 HandleTlsData 分支

idigger commented 2 years ago

感谢回复, 真是奇怪,那天我记得两个分支都试过不行,今天重新编了一个测试程序测试,结果HandleTlsData分支可以正确无误的加载了,然后又在之前的项目中测试了一下,HandleTlsData分支也是可以的。估计是那天有点晕了,哪里没搞对吧。

最后又重新检出 master 分支测试了一下也可以正常加载了。

再次感谢你分享的这么好用的模块。加星点赞。

bb107 commented 2 years ago

很高兴能帮到你