Линкер VS2008 создает проблемы против обхода (LNK2019) - PullRequest
0 голосов
/ 25 февраля 2019

Возникла странная проблема с созданием некоторого кода (VS2008) вокруг Detours.

Я добавил необходимые заклинания MS для компоновщика (также пытался напрямую добавить его в «Дополнительные зависимости»);

#pragma comment(lib, "detours.lib")

И правильно настроить пути включения и пути поиска в библиотеке, но я сталкиваюсь с ошибкой LNK2019.

Конкретные ошибки:

Error   1   error LNK2019: unresolved external symbol _DetourTransactionCommit@0 referenced in function _DllMain@12 dllmain.obj DetourDLL
Error   2   error LNK2019: unresolved external symbol _DetourUpdateThread@4 referenced in function _DllMain@12  dllmain.obj DetourDLL
Error   3   error LNK2019: unresolved external symbol _DetourTransactionBegin@0 referenced in function _DllMain@12  dllmain.obj DetourDLL

Появляется компоновщикнаходить файл .lib (иначе, насколько я помню, это выдает другую ошибку).

Я подал файл detours.lib в dumpbin и обнаружил, что символы там есть, но они не определены с подчеркиванием в начале (Некоторое время назад я играл на земле VC ++, хотя и не уверен, чтокомпоновщик на самом деле ищет _ или, если это просто какое-то украшение, которое компоновщик добавляет в ошибку).

0D1 00000000 SECT4B notype ()    External     | DetourTransactionBegin
0D3 00000000 SECT4D notype ()    External     | DetourTransactionCommit
0D5 00000000 SECT51 notype ()    External     | DetourUpdateThread

Если кто-нибудь может дать предложение относительно того, на что смотреть дальше, я быценим это.

Только что нашел пост, в котором говорилось, что отсутствие начальных подчеркиваний в моем экспорте символов может быть связано с тем, что он был собран с другим компилятором, что НЕ в данном случае (ну, он был построен с VS2013, поэтомутехнически «другой» компилятор, но не тот, который будет использовать другие соглашения), также пытался создать один и тот же код на VS2013, и я получаю те же ошибки (неудивительно).

...