VC ++ LNK2001: неразрешенный внешний символ только при компиляции на 64-битной - PullRequest
0 голосов
/ 19 августа 2009

Я сделал dll, которая прекрасно компилируется в 32-битном режиме, но при компиляции в 64-битном режиме (как на кросс-компиляции на 32-битном боксе, так и на собственном 64-битном боксе) я получаю вышеуказанную ошибку. Символ, на который он жалуется, следующий:

"struct return_info_ * __cdecl patch_file(char *,char *,char *)"

Я новичок в C ++, но думаю, что правильно определил структуру и сигнатуру. Структура return_info_ определяется следующим образом:

typedef struct return_info_
{
    char *message;
    int code;
} return_info;

В том же заголовке у меня есть подпись функции:

return_info* patch_file(char* oldfile, char* newfile, char* patchfile);

Это все в собственном коде c / c ++, который скомпилирован как статически связанная библиотека. Затем у меня есть наша основная библиотека, которая ссылается на это и является CLR-совместимым двоичным файлом. Любые идеи, почему 64-битный компилятор выдает эти ошибки?

1 Ответ

1 голос
/ 19 августа 2009

Объявление в заголовке выглядит правильно, но по какой-то причине в вашей 64-битной сборке фактическая реализация не найдена.

Это определено в вашей библиотеке? Возможно, он неправильно скомпилирован в 64-битной версии.

Если это функция, являющаяся частью вашего приложения, убедитесь, что в процесс 64-битной сборки включен правильный исходный файл.

...