powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS7.0 + CString + Lib VS6.0 = Проблемы
4 сообщений из 4, страница 1 из 1
VS7.0 + CString + Lib VS6.0 = Проблемы
    #32427152
userfromhell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые гуру, подскажите способ. Как вызывать методы библиотеки на Visual Studio 6.0 с использованием CString. Известно, что класс CString сильно изменился в Visual Studio 7.0, по сравнению с 6.0
Но библиотеки-то откомпилированны под старый класс, и вызов, например,
class CValue
{
public:
int SaveToString(CString &); //3297
}
уже не проходтит, т.к. вместо CString подставляется шаблон CStringT.
Ошибка компоновки:
AddIn error LNK2019: unresolved external symbol "public: int __thiscall CValue::SaveToString(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" referenced in function "public: virtual int __thiscall CMyExtComp::CallAsFunc(int,class CValue &,class CValue * *)"

Вот и вопрос - как вызвать метод SaveToString, что бы его header соответствовал старому варианту.
Заранее спасибо.
...
Рейтинг: 0 / 0
VS7.0 + CString + Lib VS6.0 = Проблемы
    #32427215
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знал про такое с 7-й студией.

Я думаю, что никак.
Ибо
CString(6) -> Afx.h -> (link)MFC42.dll, а тут жёстко прописанный код
тоже самое и с CString(7).

Хотя нет. Можно (попробовать)сделать так:
Через
Код: plaintext
1.
HMODULE hModMFC42 = LoadLibrary( "MFC42.dll" );
fptr = (int(*)(CString&))GetProcAddress(hModMFC42, "SaveToString" ); 

потом ещё нужно за собой аккуратно перетацить из Afx.h описание класса CString и сделать так, чтоб не было конфликтов имён с VS7.

Или, чтоб не тащить за собой старый Afx.h. Если можно с новым классом сделать каст к (LPTSTR) то можно пытаться общаться со старыми функциями используя его. Но скорее всего, описание класса всё равно понадобится..
...
Рейтинг: 0 / 0
VS7.0 + CString + Lib VS6.0 = Проблемы
    #32427462
userfromhell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb Если можно с новым классом сделать каст к (LPTSTR) то можно пытаться общаться со старыми функциями используя его. Но скорее всего, описание класса всё равно понадобится..
можно подробнее, pls. Я понимаю static_cast<LPTSTR>
Код: plaintext
1.
2.
HMODULE hModMFC42 = LoadLibrary( "MFC42.dll" );
fptr = (int(*)(CString&))GetProcAddress(hModMFC42, "SaveToString" );
fptr.SaveToString(static_cast<LPTSTR>((CString *)str))

А то я в MFC не очень...
...
Рейтинг: 0 / 0
VS7.0 + CString + Lib VS6.0 = Проблемы
    #32428222
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-подробнее что именно?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS7.0 + CString + Lib VS6.0 = Проблемы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]