es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 …

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.