Подскажите, как организовать программу и компиляцию, чтобы точка входа в программу находилась в библиотеке, как в MFC. В приложении MFC точка входа в программу находится где-то в недрах MFC!
(Т.е. в решении есть два проекта: исполняемый exe и статическая библиотека lib. Точку входа хочу поместить в lib. Возможно ли это?)
VS2015, Win7
Здравствуйте, Vladimir, Вы писали: V>Подскажите, как организовать программу и компиляцию, чтобы точка входа в программу находилась в библиотеке, как в MFC. В приложении MFC точка входа в программу находится где-то в недрах MFC! V>(Т.е. в решении есть два проекта: исполняемый exe и статическая библиотека lib. Точку входа хочу поместить в lib. Возможно ли это?) V>VS2015, Win7
Не совсем понимаю. Что мешает main разместить внутри библиотеки?
Здравствуйте, Went, Вы писали:
W>Не совсем понимаю. Что мешает main разместить внутри библиотеки?
Поместил в библиотеку:
extern "C"
int APIENTRY _tWinMain(
HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
...
}
Сообщение компилятора:
error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции "int __cdecl
Интуитивно понимаю, что точку входа необходимо определить где-то в настойках проекта.
Только где и как!
Здравствуйте, Vladimir, Вы писали:
V>Здравствуйте, Went, Вы писали:
W>>Не совсем понимаю. Что мешает main разместить внутри библиотеки? V>Поместил в библиотеку: V>extern "C" V>int APIENTRY _tWinMain( V> HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) V>{ V>... V>} V>Сообщение компилятора: V>error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции "int __cdecl V>Интуитивно понимаю, что точку входа необходимо определить где-то в настойках проекта. V>Только где и как!
Не смущает что _tWinMain и WinMain это немного разные имена?
Здравствуйте, kov_serg, Вы писали:
_>Не смущает что _tWinMain и WinMain это немного разные имена?
Совершенно не смущает.
#define _tWinMain wWinMain // in tchar.h
Здравствуйте, Vladimir, Вы писали:
V>Здравствуйте, kov_serg, Вы писали:
_>>Не смущает что _tWinMain и WinMain это немного разные имена? V>Совершенно не смущает. V>#define _tWinMain wWinMain // in tchar.h
просто проверьте имя в той библиотеке, которую подаёте на вход линкёру. Можно руками. Это имя совпадает?
Здравствуйте, Vladimir, Вы писали:
V>Здравствуйте, kov_serg, Вы писали:
_>>Не смущает что _tWinMain и WinMain это немного разные имена? V>Совершенно не смущает. V>#define _tWinMain wWinMain // in tchar.h
wWinMain и WinMain тоже разные имена. И то что линковщик хочет именно WinMain никак не смущает?
Здравствуйте, Vladimir, Вы писали:
V>Подскажите, как организовать программу и компиляцию, чтобы точка входа в программу находилась в библиотеке, как в MFC. В приложении MFC точка входа в программу находится где-то в недрах MFC!
wxWidgets. В ней main спрятали куда-то внутрь библиотеки, но не в lib, а в какой то макрос (ковырял давно, сейчас не помню). Hello World на wxWidgets.
Здравствуйте, Vladimir, Вы писали:
V>Подскажите, как организовать программу и компиляцию, чтобы точка входа в программу находилась в библиотеке, как в MFC. В приложении MFC точка входа в программу находится где-то в недрах MFC! V>(Т.е. в решении есть два проекта: исполняемый exe и статическая библиотека lib. Точку входа хочу поместить в lib. Возможно ли это?) V>VS2015, Win7
Посмотри, как gtest организован.
Именно так и есть — main в gtest-main либе.
Здравствуйте, Vladimir, Вы писали:
V>Подскажите, как организовать программу и компиляцию, чтобы точка входа в программу находилась в библиотеке, как в MFC. В приложении MFC точка входа в программу находится где-то в недрах MFC! V>(Т.е. в решении есть два проекта: исполняемый exe и статическая библиотека lib. Точку входа хочу поместить в lib. Возможно ли это?) V>VS2015, Win7
++ кэповский ответ: компоновщик->дополнительно->точка входа (linker->advanced->entry point) -- не подходит?