Передача значение (референс) в библиотеку

bdm77
Дата: 07.07.2015 14:01:45
Добрый день!

Компилировал проект в Debug вся компиляция успешно проходила и программа запускается.
Компиляция в Release тоже проходит успешно, но вот при запуске программы возникает
ошибка при передаче параметра в ф-цию:

main(){
......
   std::string ident(plugins_it->first.c_str());
   printf("Name plugin : %s\n", ident.c_str() ) // печатат имя 

   int res = plugin->load(ident);
}

//Class Plugin
int PlaginX::load(const std::string& identifier){
  printf("Name plugin : %s\n", identifier) // identifier получает знаечеие <bad_ptr> 
}


Компилирую в VS 2005,
я понимаю что это настройки в VS, но где именно..
М.б. у кого то были похожие проблемы?!

Спасибо!
YesSql
Дата: 07.07.2015 15:54:58
попробуй так

main(){
......
   std::string ident(plugins_it->first.c_str());
   printf("Name plugin : %s\n", ident.c_str() ) // печатат имя 

   int res = plugin->load(ident.c_str());
}

//Class Plugin
int PlaginX::load(const char * identifier) {
  printf("Name plugin : %s\n", identifier) 
}
MasterZiv
Дата: 07.07.2015 18:03:43
bdm77
Добрый день!

Компилировал проект в Debug вся компиляция успешно проходила и программа запускается.
Компиляция в Release тоже проходит успешно, но вот при запуске программы возникает
ошибка при передаче параметра в ф-цию:

main(){
......
   std::string ident(plugins_it->first.c_str());
   printf("Name plugin : %s\n", ident.c_str() ) // печатат имя 

   int res = plugin->load(ident);
}

//Class Plugin
int PlaginX::load(const std::string& identifier){
  printf("Name plugin : %s\n", identifier) // identifier получает знаечеие <bad_ptr> 
}


Компилирую в VS 2005,
я понимаю что это настройки в VS, но где именно..
М.б. у кого то были похожие проблемы?!

Спасибо!


Это не настройки VS, это кривые ручки.

Ты один раз написал правильно, а другой раз -- неверно. Надо так:

printf("Name plugin : %s\n", identifier.c_str() );
MasterZiv
Дата: 07.07.2015 18:04:34
YesSql
попробуй так

main(){
......
   std::string ident(plugins_it->first.c_str());
   printf("Name plugin : %s\n", ident.c_str() ) // печатат имя 

   int res = plugin->load(ident.c_str());
}

//Class Plugin
int PlaginX::load(const char * identifier) {
  printf("Name plugin : %s\n", identifier) 
}


Это не нужно, передача std::string по ссылке вполне себе тоже вариант без ошибок.
YesSql
Дата: 07.07.2015 19:04:56
MasterZiv
Это не нужно, передача std::string по ссылке вполне себе тоже вариант без ошибок.

Нужно-ненужно. Это параметр плагина. у которого может быть своя версия STL.
Dimitry Sibiryakov
Дата: 07.07.2015 19:10:57

YesSql
Это параметр плагина. у которого может быть своя версия STL.

Совершенно пофиг. В этом дебильная магия темплейтов.

Posted via ActualForum NNTP Server 1.5

YesSql
Дата: 07.07.2015 19:23:00
Dimitry Sibiryakov
YesSql
Это параметр плагина. у которого может быть своя версия STL.

Совершенно пофиг. В этом дебильная магия темплейтов.

Да? Программка скомпилирована VS2005 а какой-нибудь плагин позже продали кастомеру откомпелированный VS2012.
bdm77
Дата: 08.07.2015 06:43:05
YesSql
Dimitry Sibiryakov
пропущено...

Совершенно пофиг. В этом дебильная магия темплейтов.

Да? Программка скомпилирована VS2005 а какой-нибудь плагин позже продали кастомеру откомпелированный VS2012.


Плагин тоже на 2005 скомпилирован! И вопрс в том, что в debug запускается, а в release нет!!
bdm77
Дата: 08.07.2015 06:49:34
Решилась проблема.. Как Менделеву ночью приснилась решение.

Если проект в mode Release, то не надо ему "пихать" плагины, которые были скомпилированны в режиме debuge!!

Спасибо!!!