Здравствуйте comer, Вы писали:
C>Здравствуйте Corvin, Вы писали:
Vi2>>>Почему дважды, если Linker Tools Error LNK2001 — unresolved external symbol "symbol"? Неразрешённая, т.е. нет такой функции при сборке.
C>>Не, по-моему, ты неправ, неразрешенная значит, что есть несколько вариантов и неясно, какой выбрать
C>Vi2 прав. Я просто не обратил внимания на ошибку. См. пояснения к ней в MSDN:
C>Code will generate this error message if it references something (like a function, variable, or label) that the linker can’t find in all the libraries and object files it searches. In general, there are two reasons this error occurs: what the code asks for doesn’t exist (the symbol is spelled incorrectly or uses the wrong case, for example), or the code asks for the wrong thing (you are using mixed versions of the libraries?some from one version of the product, others from another version).
C>Тут либо файл не подключен к проекту "threads.cpp", либо интерфейсы функций разный в h и cpp файлах. Почему они могут отличаться в MSDN написано см. LNK2001.
C>
Ну ладно-ладно, может, мы оба правы, просто что странно, так это то, что и файл подключен и интерфейсы одинаковые.
Здравствуйте Corvin, Вы писали:
C>Нет, ты определенно неправ, — попробуй у себя сделать 2 объявления функция с одинаковым именем, но с разным интерфейсом в 2-х различных хедерах и посмоти, что тебе выкинет компилятор. C>А потом попробуй вызвать функцию, которой нет и тоже посмотри, что тебе выдаст компилятор
C>>РrinterMonitor.obj : error LNK2001: unresolved external symbol "int __cdecl DestroyThreadSyncResources(void)" (?DestroyThreadSyncResources@@YAHXZ).
Этим и утверждается, что ни в одном файле, который ты дал для сборки нет функции "int __cdecl DestroyThreadSyncResources(void)", чтобы ты мне не порекомендовал поииследовать.
Тем более, что функция описана как BOOL CreateThreadSyncResources(void).
Здравствуйте Corvin, Вы писали:
C>Здравствуйте comer, Вы писали:
C>>Здравствуйте Corvin, Вы писали:
C>>>Есть хедер и реализация функций в срр.
C>>Пакеж. C>Да, пожалуйста, ничего особенного:
C>threads.h C>
M>в threads.cpp?
Гы-Гы... Уже не смешно... Мы тут пришли к выводу, что это глюки компилятора и решили проблему тупым переименованием требуемых функций...
Здравствуйте Corvin, Вы писали:
C>Гы-Гы... Уже не смешно... Мы тут пришли к выводу, что это глюки компилятора и решили проблему тупым переименованием требуемых функций...
СТОП! Каким таким переименованием? Не видел, пожалуйста на арену!
Здравствуйте comer, Вы писали:
C>Здравствуйте Corvin, Вы писали:
C>>Гы-Гы... Уже не смешно... Мы тут пришли к выводу, что это глюки компилятора и решили проблему тупым переименованием требуемых функций...
C>СТОП! Каким таким переименованием? Не видел, пожалуйста на арену!
Просто дело обстоит так: мне нужно написать прогу для мониторинга работы принтера. В МСДНэе я нашел прогу-пример работы с принтером, которая как раз и отслеживала все, что только можно и собирала всю информацию о работе принтера. Написана она классно, со всеми возможными выделениями-перераспределениями памяти, так что я решил просто взять из нее все необходимые мне ф-ции и перелопатить подж себя. Для чего и переписал оные хедеры с реализациями в свой прожект. Проблема с unresolved ambiguity решилась когда я вместо, скажем,
Здравствуйте Corvin, Вы писали:
C>>>Гы-Гы... Уже не смешно... Мы тут пришли к выводу, что это глюки компилятора и решили проблему тупым переименованием требуемых функций...
... C>Написана она классно, со всеми возможными выделениями-перераспределениями памяти, так что я решил просто взять из нее все необходимые мне ф-ции и перелопатить подж себя. Для чего и переписал оные хедеры с реализациями в свой прожект.
... C>Просто интересно стало, что ж это еще такое можно было настроить в VС++...
Тут, вероятно, в какой то одной из подключенных к твоему проекту библиотеке уже есть такие функции, покрайней мере с такими именами, но к глюку комплайлера или линкера отношусь скептически (хотя и видел их много но не верю пока не будет очевидно).
Здравствуйте comer, Вы писали:
C>Тут, вероятно, в какой то одной из подключенных к твоему проекту библиотеке уже есть такие функции, покрайней мере с такими именами, но к глюку комплайлера или линкера отношусь скептически (хотя и видел их много но не верю пока не будет очевидно).
Я тоже отношусь скептически, поетому ж, собствено и пишу, но проект же ж мой, НЕТУ там больше функций с такими именами, НЕТУ!!! Сам чуть не лопнул, это быдо то, чем я первый час занимался.
Здравствуйте Corvin, Вы писали:
C>Я тоже отношусь скептически, поетому ж, собствено и пишу, но проект же ж мой, НЕТУ там больше функций с такими именами, НЕТУ!!! Сам чуть не лопнул, это быдо то, чем я первый час занимался.
Если проект не большой, или не лень выделить мини проект который глючит, можешь дать посмотреть вместе с .dsp? Если уже не интересно, то можно и забыть .
Когда ты заменил в threads.h и threads.cpp
C>BOOL CreateThreadSyncResources(void); C>BOOL DestroyThreadSyncResources(void);
на
C>BOOL CreateThreadSyncResources1(void); C>BOOL DestroyThreadSyncResources1(void);
где-то остались вызовы, в частности, в РrinterMonitor.obj или РrinterMonitor.cpp, функции DestroyThreadSyncResources. Которой уже нет в проекте. Вот тебе и LINK2001.
Уж почему она вызывает эту функцию и почему компилятор пропускает такой вызов без прототипа, нужно смотреть в тело РrinterMonitor.cpp.
Поищи поиском по всем своим файлам строчки "ThreadSyncResources" через "Поиск в файлах...", указав *.h, *.c и *.cpp.
Здравствуйте Corvin, Вы писали:
C>Просто дело обстоит так: мне нужно написать прогу для мониторинга работы принтера. В МСДНэе я нашел прогу-пример работы с принтером, которая как раз и отслеживала все, что только можно и собирала всю информацию о работе принтера. ...
Слушай, а можешь сказать, где она в MSDN есть? А то мне предолжили нечто подобное сделать, только я не приступал еще
- Простите, профессор, не пса, а когда он уже был человеком.
— То-есть он говорил? Это еще не значит быть человеком. (с) Булгаков
Здравствуйте small_cat, Вы писали:
SC>Здравствуйте Corvin, Вы писали:
C>>Просто дело обстоит так: мне нужно написать прогу для мониторинга работы принтера. В МСДНэе я нашел прогу-пример работы с принтером, которая как раз и отслеживала все, что только можно и собирала всю информацию о работе принтера. ...
SC>Слушай, а можешь сказать, где она в MSDN есть? А то мне предолжили нечто подобное сделать, только я не приступал еще
Не помню... Я долго долго ковырялся в районе функции FindFirstPrinterChangeNotification и че-то нарыл... А может и не в МСДН"е... В общем, если хош, могу прислать