Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: DLL, MFC и Си  (Прочитано 9562 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Michaelss
Гость
« : 17-05-2006 09:49 » 

У меня есть обычный Си make-проект dll, но мне надо подключить в неё MFC-класс ChttpFile.
Сделал проект в студии "MFC AppWizard(dll)" with MFC static linked.

При сборке выдаёт:
Код:
Compiling...
StdAfx.cpp
LINK : fatal error LNK1561: entry point must be defined
Error executing cl.exe.

Project settings:
[ccode]
/nologo /MD /w /W0 /Gm /GX /ZI /Od /I "..\include" /I "..\protos" /D "WINNT" /D "WIN32" /D "NDEBUG" /D "WIN32_DLL_VSN" /D "_WIDOWS" /D "_USRDLL" /D "_WINDLL" /D "_MBCS" /Fo"Debug/" /Fd"Debug/" /FD /GZ /TP
[/ccode]

подскажите в чем может быть причина LNK1561 в данной ситуации?
СПАСИБО!!! 
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 17-05-2006 10:10 » 

Это означает, что у тебя нет точки входа в dll - ф-я которая вызывается при инициалиизации библиотеки. Обычно это ф-я DllMain. Если это должна быть именно MFC dll тебе нужет объект типа App. Может тебе не это надо, а достаточно использовать MFC внутри dll? В общем подробней - что ты хочешь, желательно с кодом.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Michaelss
Гость
« Ответ #2 : 17-05-2006 10:14 » 

 Мне нужно в Си-шной dll организовать работу с http и я решил для этого использовать MFC класс CHttpFile и поэтому сделал проект "MFC AppWizard(dll)" with MFC static linked и в него втюхиваю старые Си-функции. может быть можно это по другому сделать?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 17-05-2006 10:44 » 

под MFC библиотекой - подразумевается библиотека расширения MFC те которая экспортирует обычно модифицированные классы или классы потомки объектов MFC.
Поскольку ты хочешь просто использовать MFC объекты внутри то,  в принципе всё правильно - у тебя есть объект CWinApp? Лучше конечно на код взглянуть. У тебя же есть твой пустой проект, для dll - засунь его в архив и кинь либо сюда, либо мне на мыло.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 17-05-2006 12:42 » 

Я думаю не всё так страшно.

1. Удаляй папку Debug перед архивированием - файл будет гораздо меньше. Не у всех толстенький интернет. Народ ещё и модемами по ограниченному трафику выходит.

2. Я думаю ты сам себя запутал - я не могу проверить, тк ты не положил cq_basic.h - он не находится. Но вроде в релизе нет этой ошибки линковщика.

Теперь, что сделать тебе - попробуй свой проект в релизе компильнуть.
Там мудрежа с настройками проекта нет.

Или лучше всего так - чистый проект - компилируй. Всё должно быть в порядке - потом добавь только одну ф-ю, компилируй. Проерь выход depends.exe в пакете студии. И тд

Имена экспортируемых ф-ций бери в скобки

extern "C"
{
   WEXPORT_FTYPE int afm_initialize_dll(...
   ...
};



Ещё ты кажется собственно экспорт забыл - WEXPORT_FTYPE не определена

в .h надо добавить что-то типа

#define WEXPORT_FTYPE __declspec(dllexport)

и его надо вроде перед ф-ей писать

WEXPORT_FTYPE int afm_initialize_dll(

Потом AFX_MANAGE_STATE(AfxGetStaticModuleState()); можешь выкинуть это только для ф-ций, которые будут вызываться в MFC. Хотя конечно если это и требуется можешь оставить. Я просто понял, что ты работаешь без MFC, а просто хочешь использовать один объект.

Напиши о результатах
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 17-05-2006 12:49 » 

Вот что-то типа такого

* Tst.zip (8.57 Кб - загружено 1002 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Michaelss
Гость
« Ответ #6 : 17-05-2006 14:30 » 

УРА!!!  Всё собралось!!!
 Вот в чем была причина:
В подключаемом .h - файле описаны вызываемые функции, но файл с их телами я не подключил (по глупости), т.к. он имеет другое название. Но самое интересное, что студия это всё компилила и выдавала ошибку линковки об отсутствии точки входа main()!!!
 Но всё равно спасибо за помощь! Т.к. последнее сообщение навело на мысль в чем дело!!!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines