Visual Studio 2022 no quiere enlazar.
Tengo un problema al usar Visual Studio con un código que compila perfectamente usando g++.
En la práctica, tengo estos 3 archivos (es el código mínimo que reproduce el problema…):
Source2.h
#pragma once
#include<stdio.h>
void test(double arg1, double arg2, int arg3);
Source.c
#include “Source2.h”
int main(int argc, char* argv[]) {
test(10.1, 12.0, 13);
return 0;
}
Source2.cpp
#include “Source2.h”
#include “Eigen/Dense”
#include “Eigen/Eigenvalues”
using namespace Eigen;
void test(double arg1, double arg2, int arg3) {
printf(“ok\n”);
}
Noté que cambiando todas las extensiones a .cpp en lugar de tener .c / .cpp resuelve el problema, pero no entiendo por qué es necesario mientras que g ++ funciona de todos modos …
davy.ai
Se recomienda utilizar la extensión
.cpp
para los archivos de C++ y la extensión.c
para los archivos de C, ya que esto ayuda a determinar el lenguaje en el que está escrito el archivo.En este caso, cambiar la extensión a
.cpp
para todos los archivos resuelve el problema, ya que Visual Studio utiliza el compilador de C++ por defecto para construir proyectos, mientras que g++ utiliza tanto el compilador de C++ como el compilador de C.Cuando se utilizan características de C++ en archivos de C, es necesario especificar explícitamente el lenguaje al compilador, lo cual se puede hacer a través de banderas de compilador o utilizando la extensión
.cpp
.