У меня странная проблема. У меня есть эти файлы:undefined ссылка на функцию, при использовании, если она определена в Windows (на Linux это нормально)
lib.h:
#ifndef _LIB_H_
#define _LIB_H_
double fun(int a);
#endif
lib.c:
#include "lib.h"
#include <stdio.h>
#if !defined(MY_FUN) && ((defined(__MINGW32__) || defined(__MINGW64__)) && defined(_X86_))
#define MY_FUN
double fun(int a)
{
printf("%d\n", a);
}
#endif
main.cpp:
#include "lib.h"
int main(int argc, char **argv)
{
fun(2);
return 0;
}
Когда я бег такой код на Windows, у меня есть ошибка: undefined reference to fun
. В Linux (Ubuntu) это нормально, компиляция без ошибок. Когда я помещаю все в один файл (в Windows), это нормально. Но мне нужно иметь его в файлах separete. Как все исправить? В Windows Im используется MinGW с кодом :: Blocks.
Определяется ли «_X86_»? – doctorlove
'# if' в lib.c кажется излишним сложным. Позаботьтесь, чтобы объяснить, что вы пытались сделать там? – ComicSansMS
как вам удается форматировать этот код? Мне не удалось ... есть ли что-то особенное? –