Я использую Windows, использую VS2022. Я создал библиотеку, используя CUDA, встроенную в графический интерфейс MSVC (не выполняемую непосредственно из командной строки), и в ней я экспортирую функцию устройства. Затем у меня есть еще один файл .cu, который я создаю в другом проекте CUDA и связываю с файлом lib библиотеки.
Я получаю сообщение об ошибке с неопределенной ссылкой на _ZN7ustructaSERKS_< /code> но если я посмотрю в Dependency Walker на экспортированные функции, они будут больше похожи на ??Kustruct@@QEBA?AV0@H@Z (вероятно, это не одна и та же функция, а Дело в том, что протоколы искажения разные).
Поскольку я пытаюсь решить эту проблему, мне интересно, выполняет ли Dependency Walker собственное искажение того, что находится в библиотеке dll, чтобы всегда отображать согласованный протокол, или, возможно, nvcc искажает один способ сообщений об ошибках и другой способ генерации кода. Конечно, принимая эти имена за чистую монету, неопределенная ссылка имеет смысл, если библиотека искалечена одним способом, а меньший проект — другим, но они оба встроены в графический интерфейс с одинаковыми настройками компилятора и компоновщика, насколько я могу судить.
Кстати, если я использую Dependency (современную версию Dependency Walker), он отображает все в неизмененном виде, так что это тот случай, когда приложение отображает это определенным образом, который отличается от скомпилированного. код.
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-the-com