F
floke
Нужно скомпилировать программу, причем часть компилирует VS, часть утилита nmake через написанный makefile, после чего VS начинает линковать полученные файлы. Реализовано это следующим образом(на простом примере):
Фаил, который компилирует VS:
test_make.cpp
2 файлики которые компилирует nmake через makefile
myhead.h
mysrc.cpp
компиляция последних двух запускается через bat фаил(запускается он vs через свойства проекта -> build events -> pre build events)
На этапе линковки возникает ошибка, мол линкер не находии метод prnt(int) . Заметил пару особенностей:
1) если компилить проект из командной строки - всё прекрасно компилиться и линкуется
2) если компилить проект из VS (весь проект, то есть добавить myhead и mysrc к проекту и сделать build ) - линковку проходит, запускается
3) если компилить из VS проект как в п2 и потом подменить полученные mysrc.obj и mysrc.sbr файлы на те, которые получаться в результате компиляции из коммандной строки(при помощи того же Makefile) то проект линкуется из VS успешно
Как мне показалось, VS ищет extern функцию только в файлах проекта(а мне бы нужно, чтоб метод искался среди всех файлов, содержащихся в папке).
Фаил, который компилирует VS:
test_make.cpp
C++:
extern void prnt(int);
int main()
{
prnt(5);
return 0;
}
2 файлики которые компилирует nmake через makefile
myhead.h
C++:
#ifndef __MYHEAD_H_
#define __MYHEAD_H_
void prnt(int);
#endif
C++:
#include "myhead.h"
#include <stdio.h>
void prnt(int i)
{
printf("my number from mysrc %d " , i);
}
На этапе линковки возникает ошибка, мол линкер не находии метод prnt(int) . Заметил пару особенностей:
1) если компилить проект из командной строки - всё прекрасно компилиться и линкуется
2) если компилить проект из VS (весь проект, то есть добавить myhead и mysrc к проекту и сделать build ) - линковку проходит, запускается
3) если компилить из VS проект как в п2 и потом подменить полученные mysrc.obj и mysrc.sbr файлы на те, которые получаться в результате компиляции из коммандной строки(при помощи того же Makefile) то проект линкуется из VS успешно
Как мне показалось, VS ищет extern функцию только в файлах проекта(а мне бы нужно, чтоб метод искался среди всех файлов, содержащихся в папке).