vesago 0 10 сентября, 2018 Опубликовано 10 сентября, 2018 · Жалоба Здравствуйте. Хочу прикрутить к проекту пример Mass Storage. Накидал тестовый проектик. Перенес в него нужные исходники из примера. Компилируется но не линкуется. Error[Li005]: no definition for "ScsiCommImpl" [referenced from D:\WORK\test\Debug\Obj\scsi.o] Error[Li005]: no definition for "EntrCritSection" [referenced from D:\WORK\test\Debug\Obj\scsi.o] Error[Li005]: no definition for "ExtCritSection" [referenced from D:\WORK\test\Debug\Obj\scsi.o] В принципе ругается, что в файле scsi.c используются функции, определения которых не находит. Хотя определения всех этих функций есть в подключенном scsi.h. Подскажите, пожалуйста - что ему (линкеру) не хватает? Пример без проблем собирается. Не могу определить критические отличия.. test_2018_09102215_45.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 240 11 сентября, 2018 Опубликовано 11 сентября, 2018 · Жалоба В принципе ругается, что в файле scsi.c используются функции, определения которых не находит. Хотя определения всех этих функций есть в подключенном scsi.h. Подскажите, пожалуйста - что ему (линкеру) не хватает? Компоновщику глубоко фиолетовы все .h вместе взятые. Он про них ничего не знает. Ему нужны только .obj, .lib. И значит тел данных функций у Вас там нет. А тела в .obj/.lib попадают из файлов исходного кода (.c/.cpp/.asm/...) усилиями компилятора либо из готовых библиотек (.lib) Отсюда следует что требуемых файлов исходного кода (или .lib) у Вас нет в проекте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 13 сентября, 2018 Опубликовано 13 сентября, 2018 · Жалоба На другом форуме помогли - в опциях проекта нужно было включить опцию C++ inline semantics. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 13 сентября, 2018 Опубликовано 13 сентября, 2018 · Жалоба На другом форуме помогли - в опциях проекта нужно было включить опцию C++ inline semantics. Еще такое бывает когда в файлах *.c пытаются использовать функции из файлов *.cpp без объявления пространства имен extern "C" { } Так что компоновщик тут совсем не при чем. Компоновщик пишет другое сообщение когда что-то не находит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться