![]() |
Линкование
При линковании исходников требуется опр. библиотеки. Достаточно ли их скопировать в директорию lib прописанную в переменных средах, и указать в списке необходимых lib в командной строке после link, чтобы проект был построен правильно? если нет, то почему могут возникнуть ошибки типа LNK2001 unresolved external symbol __imp__имя функции, причем функции есть в библиотеке указанной в командной строке
И еще один вопрос: с помощью какой программы можно построить проект в котором присутствует файл sources(примерное содержание ниже), в makefile указана ссылка на этот файл Содержание примерно следующее: Код:
|
Цитата:
Цитата:
Цитата:
|
В ac97.cpp написано:
Код:
extern "C" { Код:
NTKERNELAPI Но выдается ошибка ac97.obj: error LNK2001: unresolved external symbol __imp__MmAllocateContiguousMemory В чем может быть причина?Может быть ошибка вызвана неправильной компиляцией, например указаны какие-нибудь лишние флаги при компилировании? Компилируется весь проект вручную в командной строке с помощью cl.exe с указанием всех исходников и с параметрами /nologo /W3 /GX /O2 /D 'WIN32' /D '_WINDOWS' /D '_MBCS' /YX /FD /c Ошибки на этом этапе не выдаются. Линкуется сразу весь проект. |
Мммм. А как насчёт /link /defaultlib:ntoskrnl.lib ???
|
Нет. Не работает.
|
mrcnn, ты решение еще не добыл? :)
У меня тут похожая ситуация, возникла... при подключении сторонних (чужих) классов проявляется (причем классов хоть визуальных (наследники MFC), хоть нет). В настройках проекта всё уже перелопатил, extern "c" пробовал, основные и некоторые другие библиотеки подключать, осталось только все библиотеки что есть (406 штук) попереподключать... тока влом. :) например при линковке с CMarkup классом: error LNK2001: unresolved external symbol "public: bool __thiscall CMarkup::SetDoc(char const *)" (?SetDoc@CMarkup@@QAE_NPBD@Z) fatal error LNK1120: 1 unresolved externals а при линковке с CSplitterControl: error LNK2001: unresolved external symbol "public: __thiscall CSplitterControl::CSplitterControl(void)" (??0CSplitterControl@@QAE@XZ) error LNK2001: unresolved external symbol "public: virtual __thiscall CSplitterControl::~CSplitterControl(void)" (??1CSplitterControl@@UAE@XZ) fatal error LNK1120: 2 unresolved externals Даже не понятно, куда копать |
Время: 05:52. |
Время: 05:52.
© OSzone.net 2001-