세상을 이롭게

OpenCPN Plugins 로드에러 본문

OpenCPN

OpenCPN Plugins 로드에러

2022. 3. 31. 11:26

플러그인을 만들고 Release 로 OpenCPN에서 확인하던 도중 강제 종료 후 부터
OpenCPN 플러그인 패널에 들어가려하면 아래와 같은 에러가 뜨기 시작했다.

이유는 간단했다. AppData 폴더안에 내용이 저장되었다, 삭제되지 않았기 때문이였다.
AppData 폴더는 윈도우 사용자 각각에게 존재하는데, 응용 프로그램의 데이터와 설정 내용을 저장하는 폴더이다.

C:\Users\user\AppData\Local\opencpn\plugins

그러므로 위의 경로 안에 생긴 dll을 지워주면 된다.

이를 알기 위해서 pluginmanager.cpp 의 2286 번 줄 부터 확인하면된다.

PlugInContainer *PlugInManager::LoadPlugIn(wxString plugin_file,
                                           PlugInContainer *pic) {
  wxString msg(_T("PlugInManager: Loading PlugIn: "));
  msg += plugin_file;
  wxLogMessage(msg);

  pic->m_plugin_file = plugin_file;
  pic->m_pluginStatus =
      PluginStatus::Unmanaged;  // Status is updated later, if necessary

  // load the library

  if (pic->m_library.IsLoaded()) pic->m_library.Unload();

  pic->m_library.Load(plugin_file);

  if (m_benable_blackdialog && !wxIsReadable(plugin_file)) {
    msg =
        _("Unreadable PlugIn library detected, check the file permissions:\n");
    msg += plugin_file;
    msg += _T("\n\n");
    OCPNMessageBox(NULL, msg, wxString(_("OpenCPN Info")),
                   wxICON_INFORMATION | wxOK, 10);  // 10 second timeout
  } else if (!pic->m_library.IsLoaded()) {
    if (m_benable_blackdialog) {
      //  Look in the Blacklist, try to match a filename, to give some kind of
      //  message extract the probable plugin name
      wxFileName fn(plugin_file);
      wxString prob_pi_name;
      wxString name = fn.GetName();
      prob_pi_name = name;

 

 

잘된다!