неразгаданная внешняя тайна - PullRequest
2 голосов
/ 01 октября 2009

Мой компоновщик сообщает об ошибке следующим образом:

unresolved external symbol "unsigned char __fastcall BD_CLC(int,int)"...

Но я утверждаю, что все ссылки на эту функцию, а также определение функции имеют вид:

__forceinline UBYTE BD_CLC(int swap,int elem);

Я даже выполнил компиляцию с установленным «Создать предварительно обработанный файл» и прошел вывод. В каждом файле, где использовался BD_CLC, функция была объявлена ​​как

__forceinline UBYTE BD_CLC(int swap,int elem);

и, конечно, фактическое определение функции было объявлено как

__forceinline UBYTE BD_CLC(int swap,int elem) { ... }

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 01 октября 2009

Поскольку вы объявили функцию __forceinline, вам нужно убедиться, что определение, а не только объявление, видно везде, где вызывается функция.

1 голос
/ 01 октября 2009

Я думаю, что вам, возможно, придется отключить опцию компилятора / GR "Calling Convention". Возможно, __fastcall вызывает ошибку компоновщика.

/ Gr указывает вызов __fastcall Соглашение для всех функций, кроме Функции и функции члена C ++ отмечен __cdecl или __stdcall. Все Функции __fastcall должны иметь прототипы.

0 голосов
/ 01 октября 2009

Я бы попытался удалить атрибут __forceinline.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...