Столкнулся с проблемой в Visual Studio 2005 при использовании точки входа не в приложении, а в статической библиотеке.
Создаю два проекта lib и exe. Вот код из этих проектов:
Проект lib:
lib.h
#pragma once
#include <Windows.h>
class lib
{
public:
lib();
virtual~lib ();
virtual int run();
};
lib* getapp();
А он мне LNK2019: unresolved external symbol _wWinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib.
Причём это же солюшэн в VS 2003 работает на ура.
Помогите плиз ламеру. Уже месяц пытаюсь найти выход.
Здравствуйте, Propheta, Вы писали:
P>Столкнулся с проблемой в Visual Studio 2005 при использовании точки входа не в приложении, а в статической библиотеке. P>Создаю два проекта lib и exe. Вот код из этих проектов: P>А он мне LNK2019: unresolved external symbol _wWinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib. P>Причём это же солюшэн в VS 2003 работает на ура.
В статической библиотеке определен макрос _UNICODE и UNICODE?
Свойства проекта -> General -> Character Set == Use Unicode Character Set?
P>Помогите плиз ламеру. Уже месяц пытаюсь найти выход.
Здравствуйте, remark, Вы писали:
R>В статической библиотеке определен макрос _UNICODE и UNICODE? R>Свойства проекта -> General -> Character Set == Use Unicode Character Set?
Стоит юникод.
Вот только изменение на мультибит или на неопределённый не помогает.
Здравствуйте, Propheta, Вы писали:
P>Стоит юникод. P>Вот только изменение на мультибит или на неопределённый не помогает.
Поставь в линкере ключи /FORCE , /Zc:wchar_t-
Такая ошибка бывает, когда студия не может найти нужные либы. Проверь настройки и переменные окружения студии.
Re: Проблема в VS 2005, ктоторой нет в VS 2003
От:
Аноним
Дата:
10.01.08 10:26
Оценка:
Здравствуйте, Propheta, Вы писали:
P>Столкнулся с проблемой в Visual Studio 2005 при использовании точки входа не в приложении, а в статической библиотеке. P>Создаю два проекта lib и exe. Вот код из этих проектов:
P>Проект lib:
P>lib.h P>[c]
P>lib* getapp();
P>lib* getlib() {return g_plib;};
P>Помогите плиз ламеру. Уже месяц пытаюсь найти выход.
Насколько я понимаю, ты просто не совсем внисательно смотрел свой код, замени в lib.h getapp() на getlib() и должно все скомпилятся
Re: Проблема в VS 2005, ктоторой нет в VS 2003
От:
Аноним
Дата:
10.01.08 10:48
Оценка:
Судя по ошибке, приложение не может найти точку входа, которой в данном случае является функция main(int argc, _TCHAR* argv[]).
Вставте ее в ехе.cpp создайте экземпляр класса и вызовите метод run.
Re[2]: Проблема в VS 2005, ктоторой нет в VS 2003
От:
Аноним
Дата:
19.01.08 00:45
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Propheta, Вы писали:
P>>Столкнулся с проблемой в Visual Studio 2005 при использовании точки входа не в приложении, а в статической библиотеке. P>>Создаю два проекта lib и exe. Вот код из этих проектов:
P>>Проект lib:
P>>lib.h P>>[c]
P>>lib* getapp();
P>>lib* getlib() {return g_plib;};
P>>Помогите плиз ламеру. Уже месяц пытаюсь найти выход.
А>Насколько я понимаю, ты просто не совсем внисательно смотрел свой код, замени в lib.h getapp() на getlib() и должно все скомпилятся
Здесь извиняюсь. Ошибся. Только я не копировал это из проектов. Здесь всё рукаи ма скорую писал. Вообще проект довольно большой и перенёс я его из 2003 студии.
В ней всё нормально. После переноса сталась беда. Не компилится и всё. В проектах у меня всё нормально.
Re[2]: Проблема в VS 2005, ктоторой нет в VS 2003
От:
Аноним
Дата:
19.01.08 00:53
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Судя по ошибке, приложение не может найти точку входа, которой в данном случае является функция main(int argc, _TCHAR* argv[]). А>Вставте ее в ехе.cpp создайте экземпляр класса и вызовите метод run.
Ну почти...
main(int argc, _TCHAR* argv[]) это консольная гадость, а у меня Win32 приложение.
Пробовал
int WINAPI _tWinMain (HINSTANCE, HINSTANCE, LPTSTR, int)
int WINAPI wWinMain (HINSTANCE, HINSTANCE, LPWSTR, int)
#pragma comment (linker, "/ENTRY:wWinMain") тоже не помогает.
Здравствуйте, remark, Вы писали:
R>Здравствуйте, Propheta, Вы писали:
P>>Столкнулся с проблемой в Visual Studio 2005 при использовании точки входа не в приложении, а в статической библиотеке. P>>Создаю два проекта lib и exe. Вот код из этих проектов: P>>А он мне LNK2019: unresolved external symbol _wWinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib. P>>Причём это же солюшэн в VS 2003 работает на ура.
R>В статической библиотеке определен макрос _UNICODE и UNICODE? R>Свойства проекта -> General -> Character Set == Use Unicode Character Set?
Всё же получилось. Спасибо. Только компилятор раза с четвёртого понял, что ему нужно менять.
Вот теперь вопрос. А если я захочу написать юникод библиотеку или приложение, что тогда делать?