Actualmente estoy tratando de aprender a usar premake 4 para aplicarlo a OpenGL sdk. Actualmente estoy tratando de crear una solución de Visual Studio 2010 que construye 2 proyectos, uno es una biblioteca estática, el otro contiene un único archivo fuente principal, con el método principal.Crear una biblioteca estática y vincularla con premake
Este proyecto es extremadamente simple, y es únicamente con el propósito de aprender premake. En el proyecto de biblioteca estática, llamado Test, tengo 2 archivos, Test.h y Test.cpp. Test.h contiene el prototipo del método print(). print() simplemente imprime una línea en la consola. Usando premake, vinculé la biblioteca estática al proyecto Main, y en main.cpp incluí el archivo Test.h. Mi problema es el siguiente: en VS2010 consigo este error cuando se intenta generar:
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl print(void)" (? [email protected]@YAXXZ) referenced in function _main 1>.\Main.exe : fatal error LNK1120: 1 unresolved externals
Aquí está mi código en los 4 archivos, el 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.c pp:
#include <conio.h>
#include "test.h"
int main(){
print();
getch();
return 0;
}
Si se preguntan por qué hay una getch() allí, en mi equipo la consola se cierra inmediatamente una vez que alcanza devolver 0, así que utilizo getch() para combatir esa cuestión, lo que obliga a la ventana esperar hasta que el usuario haya presionado otra tecla. Cualquier consejo sobre este tema sería maravilloso, porque simplemente no estoy seguro de cuál es el problema. Si es algo simple, por favor no me casches, tengo muy poca experiencia con premake y bibliotecas estáticas, y es por eso que estoy tratando de aprenderlas.
Ese fue el problema, sin embargo, ahora me sale un problema cuando intento ejecutar la compilación, una ventana emergente que dice: No se puede iniciar el programa: 'ubicación_de_archivo \. \ Test.lib' El archivo especificado no se reconoce o no admite formato binario ¿Alguna ayuda con esto? PD. Lo que cambié fue mover Enlaces {"Prueba"} a la derecha debajo de Idioma. – user1032369
@ user1032369: Eso es porque estás tratando de ejecutar la * biblioteca *, no el ejecutable. Cambiar el "Proyecto de inicio" actual. –
Así que solo puedo ejecutar programas premake haciendo clic en el ejecutable, no puedo ejecutarlo desde VS? – user1032369