В настоящее время я пытаюсь узнать, как использовать premake 4, чтобы применить его к OpenGL sdk . В настоящее время я пытаюсь создать решение Visual Studio 2010, которое создает 2 проекта, один из которых является статической библиотекой, а другой содержит один основной исходный файл с методом main.
Этот проект чрезвычайно прост и предназначен исключительно для изучения premake. В проекте статической библиотеки с именем Test у меня есть 2 файла, Test.h и Test.cpp. Test.h содержит прототип для метода print (). print () просто выводит строку на консоль. Используя premake, я связал статическую библиотеку с проектом Main, а в main.cpp я включил файл Test.h. Моя проблема заключается в следующем: в VS2010 я получаю эту ошибку при попытке построить:
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl print(void)" (? print@@YAXXZ) referenced in function _main
1>.\Main.exe : fatal error LNK1120: 1 unresolved externals
Вот мой код в 4 файлах, premake4.lua:
solution "HelloWorld"
configurations {"Debug", "Release"}
project "Main"
kind "ConsoleApp"
language "C++"
files{
"main.cpp"
}
configuration "Debug"
defines { "DEBUG" }
flags { "Symbols" }
configuration "Release"
defines { "NDEBUG" }
flags { "Optimize" }
links {"Test"}
project "Test"
kind "StaticLib"
language "C++"
files{
"test.h",
"test.cpp"
}
Test.cpp:
#include <iostream>
void print(){
std::cout << "HELLO" << std::endl;
}
Test.h:
void print();
Main.cpp:
#include <conio.h>
#include "test.h"
int main(){
print();
getch();
return 0;
}
Если вам интересно, почему там есть функция getch (), на моем компьютере консоль сразу закрывается, когда она достигает значения возврата 0, поэтому я использую getch () для борьбы с этой проблемой, которая заставляет окно ждать, пока пользователь не нажал другую клавишу. Любой совет по этому вопросу был бы замечательным, потому что я просто не уверен, в чем проблема. Если это что-то простое, пожалуйста, не кастрируйте меня, у меня очень мало опыта работы с premake и статическими библиотеками, поэтому я пытаюсь изучить их.