Я не сильный знаток в С, но у меня возникла необходимость создать библиотеку именно на этом языке, т.к. у меня есть необходимые мне функции, поставляемые производителем прибора, написанные на С.
Там есть примеры. Я из них сделал обычный Win32 Console Application и все работает.
Но когда я делаю проект DLL, линкер выдает сообщение, что не найдены функции. (примерно следующее: "unresolved external __MyFunc()").
Модуль с этой функцией ТОЧНО в проекте и пути к нему верные.
Я делал DLL на Borland C++ Builder, MS Visual C++ 6, MS Visual C++ 7 результат ОБСАЛЮТНО одинаковый.
Поможите, плз.
Проблема при компиляции проекта DLL
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
А если не "примерно", а точнее? Какие именно функции "unresolved external"? Возможно, тебе нужно подключить к проекту какую-нибудь системную библиотеку?
Думаю, если ты укажешь, какие именно функции не находит линкер, это может прояснить ситуацию.
И еще момент. Линкер не находит функции, когда ты делаешь свою DLL или когда ты ее уже сделал и пытаешься из другой программы (из другой DLL) воспользоваться ее функциями?
Еще может быть тонкость в том, что линкер пытается найти не совсем то имя, что есть в другой DLL. С++ любит добавлять "дополнительные системные" символы к именам функций (в которых "зашифрованы" типы и количество параметров функции). Может быть "непонимание" происходит где-то в этой области.
Думаю, если ты укажешь, какие именно функции не находит линкер, это может прояснить ситуацию.
И еще момент. Линкер не находит функции, когда ты делаешь свою DLL или когда ты ее уже сделал и пытаешься из другой программы (из другой DLL) воспользоваться ее функциями?
Еще может быть тонкость в том, что линкер пытается найти не совсем то имя, что есть в другой DLL. С++ любит добавлять "дополнительные системные" символы к именам функций (в которых "зашифрованы" типы и количество параметров функции). Может быть "непонимание" происходит где-то в этой области.
В коде DLL нужно использовать модификатор extern "C" для имени экспортируемой функции, чтобы оно не искажалось при компиляции на С++.
Кроме этого Visual C++ для проекта DLL использует ещё один файл с расширением .DEF, в котором специальным образом прописываются имена экспортируемых функций.
Код: Выделить всё
extern "C" int MyFunc()
{
return 0;
}
Текст сообщения в студиюНо когда я делаю проект DLL, линкер выдает сообщение, что не найдены функции. (примерно следующее: "unresolved external __MyFunc()").