Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

error LNK 2019

12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Доброго всем времени суток. Встала передо мной такая задача: в солюшн к ConsoleApplication добавить ClassLibrary. Добавил проект написал класс, пол дня мучался с ошибкой типа:
 
Код:
Error1 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall fc_dll::fck_dll::~fck_dll(void)" (__imp_??1fck_dll@fc_dll@@QAE@XZ) referenced in function _main

Error3 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall fc_dll::fck_dll::fck_dll(void)" (__imp_??0fck_dll@fc_dll@@QAE@XZ) referenced in function _main

Error2 error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall fc_dll::fck_dll::rewrite(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (__imp_?rewrite@fck_dll@fc_dll@@QAEXPAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function _main

Error4 fatal error LNK1120: 3 unresolved externals  C:\Users\St0p!\Documents\Visual Studio 2008\Projects\fc_test\Debug\fc_test.exe

Вот такая вот фигня.
Думал, где-то накосячил в коде - чисто.. Специально в целях самообразования написал другой код, гораздо меньше и менее практичный. Ошибки, приведённые выше - от него.. Но были такие же.

fc_dll.h
Код:
#ifndef __FC_DLL__
#define __FC_DLL__

#ifdef __DLL
#define __EXP_FC_DLL __declspec(dllexport)
#else
#define __EXP_FC_DLL __declspec(dllimport)
#endif

#include <iostream>



namespace fc_dll
{

    class __EXP_FC_DLL fck_dll
    {
    public:
        fck_dll();
        ~fck_dll();
        void rewrite(std::string* str);
    };

}//End of fc_dll namespace

#endif


fc_dll.cpp
Код:
#define __DLL

#include "fc_dll.h"
#include <iostream>

using namespace fc_dll;

fck_dll::fck_dll()
{
}

fck_dll::~fck_dll()
{
}

void fck_dll::rewrite(std::string* str)
{
    *str="yoyoyoy!!!";
}


fc_test.cpp
Код:
#include "../fc_dll/fc_dll.h"
#include <iostream>

using namespace fc_dll;


int main()
{
    fck_dll fcd;
    std::string str="PIACE!!!";
    fcd.rewrite(&str);
    std::cout<<"str is\n";//<<str;
    char ch;
    std::cin>>ch;
    return 0;
}


Помогите пожалуйста разобраться.. Если кто с такой вот фигнёй сталкивался - буду очень благодарен.
255
18 декабря 2007 года
Dart Bobr
1.4K / / 09.04.2004
Вопрос1: Насколько я помню ClassLibrary - managed-проэкт. Ваше консольное приложение тоже managed или обычное win32?
12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Так.. Тут как. Win32 Console Application и Class Liblrary. Я не знаю, как они там managed или нет. Стандартные "заготовки" VisualStudio 2005/2008.
И, кстати, раз на то пошло, то что такое managed?)
370
18 декабря 2007 года
koval
443 / / 29.08.2005
Цитата: St0p
Так.. Тут как. Win32 Console Application и Class Liblrary. Я не знаю, как они там managed или нет. Стандартные "заготовки" VisualStudio 2005/2008.
И, кстати, раз на то пошло, то что такое managed?)



Managed - это значит под платформу .NET, а тебе надо Win32

12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Цитата: koval
Managed - это значит под платформу .NET, а тебе надо Win32



Таки это.. Просто класс подругому пишется и всё. Разве нет?..

370
18 декабря 2007 года
koval
443 / / 29.08.2005
Цитата: St0p
Таки это.. Просто класс подругому пишется и всё. Разве нет?..


Нет. Managed C++, можно рассматривать как отдельный язык программирования. В .NET абсолютно другая архитектура, да собсна объяснение потянет на не одну толстенькую книженку.

12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Таки и как с этим бороться?..
370
18 декабря 2007 года
koval
443 / / 29.08.2005
А боротся не надо, просто создавай проект Win32, а потом ставишь галочку в checkbox-e - Dll. Вот и все.
Вариант второй изучить платформу .NET и писать под нее.
Третьего не дано.)
12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Эээ, виноват)) Где галочку?)))
370
18 декабря 2007 года
koval
443 / / 29.08.2005
Цитата: St0p
Эээ, виноват)) Где галочку?)))


Создаешь проект Visual С++, выбираешь Win32 Project->(название проекта)->OK->Next->Application Type: Dll->Finish.

12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Так он тогда скомпилится целиком как DLL, а мне надо чтобы было консольное приложение и класс выдирался из DLL, которая получается из проекта ClassLibrary.. Вот...
370
18 декабря 2007 года
koval
443 / / 29.08.2005
Цитата: St0p
Так он тогда скомпилится целиком как DLL, а мне надо чтобы было консольное приложение и класс выдирался из DLL, которая получается из проекта ClassLibrary.. Вот...



А ты уверен что тебе точно нужно ClassLibrary? Код который ты писал был Unmanaged.

12K
18 декабря 2007 года
St0p
59 / / 15.04.2007
Там, на самом деле, здоровенный код (около 20 классов), и ошибок, соответственно, на каждый интерфейс, конструктор и деструктор.. Хочется, чтобы оно всё поприличнее выглядело, затолкать их в отдельный project.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог