| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ошибка Unresolved в С++ |
| Автор: Guest_automax 20.2.2003, 02:16 |
| Здравствуйте! При попытке создать программу (build), VC++ выдает ошибки: Linking... main.obj : error LNK2001: unresolved external symbol "void __cdecl rkt4(float,float,float *,void (__cdecl*)(float,float *,float *))" (?rkt4@@YAXMMPAMP6AXM00@Z@Z) main.obj : error LNK2001: unresolved external symbol "void __cdecl init_rk(int,float * *)" (?init_rk@@YAXHPAPAM@Z) Debug/prog.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. prog.exe - 3 error(s), 0 warning(s) Обе функции вызывающие ошибки объявлены в h файле rgkt4.h: #ifndef _RGKT_ #define _RGKT_ typedef void (*mdl)(float t, float* py, float* py1); void init_rk(int N, float* *py); void rkt4(float t, float dt, float* py, mdl model); #endif Я их использую в файле main.cpp. Объясните пожалуйста, в чем проблема. P.S. Кстати эта же ошибка появляется всякий раз, как в программу включаются библиотеки, написанные не в данном проекте. |
| Автор: Fantasist 20.2.2003, 02:22 |
| Так надо же подключить библиотеки, в которых данные функции реализованны. |
| Автор: automax 20.2.2003, 07:28 |
| И как это сделать? |
| Автор: Vaulter 20.2.2003, 07:45 |
| лезь в настройки проекта. там в линковщика. там длинная строчка с .lib'ами. вот там и прописывай. |
| Автор: automax 20.2.2003, 08:56 |
| И что так каждый *.cpp файл нужно прописывать в настройках линковщика, ведь у меня есть исходник. Объясните пожалуйста подробнее. |
| Автор: Vaulter 20.2.2003, 09:23 |
| automax нет. только внешние функции. дел в том, что .h файл сам по себе не содержит функции, он содержит лишь описание. а сама фун-я либо в cpp либо в .dll. так вот чтобы линкер узнал что где она в dll используются .lib файлы. |
| Автор: automax 20.2.2003, 14:56 |
| Все это я прекрасно понимаю. В этом вся и проблема: У меня есть и заголовочный файл h и исходный файл cpp. Вот мои дейстсвия: 1) Кидаю их в папку проекта 2)И там где мне нужно их использовать включаю h файл Но при попытке сделать build поялвляются ошибки (см. выше). Что я не правильно делаю? |
| Автор: automax 21.2.2003, 03:29 |
| Поднимаю тему |
| Автор: dim 21.2.2003, 03:48 |
| Так ведь если есть cpp файл его не только надо кинуть в папку проекта, а и подключить чтобы .obj файл скомпилился, а из него линкер вытянет нужные имена. |
| Автор: automax 21.2.2003, 08:09 |
| В смысле подсоединить к проекту, добавляя к исходникам? Это я делаю, но это также не помогает. |
| Автор: Vaulter 21.2.2003, 10:08 |
| automax да! добавить в проект нада! и .h и .cpp |
| Автор: automax 21.2.2003, 16:07 |
| Еще раз повторяю: все добавлено и h и cpp, но VC++ игнорирует и все выдает ошибки. |
| Автор: automax 21.2.2003, 20:23 |
| Ошибки исчезли после добавления к файлу main.cpp строчки #include "rgkt4.c" То есть пришлось добавить не только заголовочный файл, но и реализацию. Скажите пожалуйста, действительно ли так надо делать каждый раз? Может кто-нибудь посмотрит проект, он весит всего 30Кб. |
| Автор: Vaulter 21.2.2003, 23:38 |
| automax кинь на мыло если время будет. посмотрю и объясню тогда все. |
| Автор: automax 22.2.2003, 09:16 |
| Vaulter пытаюсь послать тебе на E-Mail проект, но письмо возвращается. Ты правильно указал адрес? |
| Автор: Vaulter 22.2.2003, 11:35 |
| automax извини, вроде да |
| Автор: Vaulter 23.2.2003, 06:37 |
| automax ну че? почту получил? как там? траблов нет? |
| Автор: automax 23.2.2003, 06:46 |
| Да все получилось когда сделал, что сказал vaulter. А именно: Я удалил из проекта все не важные файлы, оставил только .cpp .h .dsp и .dsw. закомпилил - ПАШЕТ!!! во всяком случае релизнул ;) чето короче было гдето прописано не то, вот он и не находил. Хорошо что работает, но мне так и не понятно в чем проблема. Кто-нибудь знает что за файл stdafx.h. Есть идея что если прописывать в нем, то все получится, но при пустом проекте он автоматически не создается. Что нужно его самому писать? Тогда возникает вопрос что там писать? |