Это так расстраивает! Я не знаю, почему это происходит. У меня есть файл с именем weirdDLL.c :
double five() {
return 5.0;
}
У меня есть другой файл с именем weirdTest.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
double f = five();
if (f != 5.0) {
printf("Test failed with %f", f);
return 1;
}
return 0;
}
Я ожидаю, что при компиляции и связывании с DLL код в weirdTest завершится без ошибок. Я компилирую на 64-битной Windows 7 , используя gcc (cygwin) с командами:
gcc -c weirdDLL.c
gcc -shared -o weirdDLL.dll weirdDLL.o
gcc -o test weirdtest.c -L./ -l weirdDLL
./test
Вывод:
Test failed with 0.000000
Кажется, что DLL подключается правильно, потому что компилятор не жалуется на отсутствие функции "пять". Кроме того, когда я помещаю операторы печати в код DLL, они отображаются нормально. Что я сделал не так?