Здравствуйте, dazy, Вы писали:
D>С объектными файлами вопрос решился так: D>я добавила и dummy.h и dummy.obj в проект и все нормально собралось.
D>Еще маааленький вопросик есть: D>я хочу сделать DLLку, делаю проект Win32 DLL
D>пишу:
D>_____файл dll1.h_______ D>int f1(int);
D>_____файл dll1.dll_____ D>#include "dll1.h" D>int f1(int x) { return 2*x; }
D>____файл dll1.def______ D>LIBRARY DLL1 D>EXPORTS D> f1
D>Делаю Build All и получаю сообщение D>"Unresolved external f1 referenced in root" D>В чем тут дело?
Дело в том, что C++ компилятор искажает название твоей функции, если только не указать перед ней модификатор:
[ccode]
// dll.h extern "C" int f1(int x);
//dll.cpp
int f1(int x); { return 2*x; }
[\ccode]
По мне, так лучше не заморачиваться с def-файлом, а сделать так:
[ccode]
//dll.h
#ifndef MYDLLAPI
#define MYDLLAPI extern "C" __declspec(dllimport)
#endif
MYDLLAPI int f1(int x);
//dll.cpp
#define MYDLLAPI extern "C" __declspec(dllexport)
#include "dll.h"
int f1(int x); { return 2*x; }
[\ccode]
При компиляции файла "dll.cpp" твоей dll сначала определяется макрос MYDLLAPI, котроый говорит компилеру, что любая функция/переменная с этим модификатором является экспортируемой из dll.
В проекте, где твоя dll используется, включаешь dll.h, MYDLLAPI в этом случае определяется как extern "C" __declspec(dllimport), из чего компилятор делает вывод, что все функции/переменные с этим модификатором являются импортируемыми и поищет информацию о них в файле dll.lib, который, кстати, нужно добавить в опции линкера.
Пробуй.
Роман.