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.

Error del vinculador de C++ VS-2019 al intentar vincular la implementación de la clase independiente.

Estoy trabajando en C++ utilizando VS-19 y tengo algunos problemas de enlace que no entiendo. Vengo de Java, por lo que no estoy familiarizado con la construcción y el enlace, además estoy trabajando con un código algo “heredado”, por lo que puede haber cosas que no entiendo del todo. Estoy obteniendo el mismo error con múltiples funciones y clases, pero solo estoy describiendo un ejemplo aquí.

Tengo una función principal que llama a la función “checkConnection” desde el mismo archivo. A su vez, esta función hace referencia a una clase (myIp) definida en un archivo diferente que está en una carpeta diferente. Cuando intento llamar a una función en el objeto myIp, obtengo un error de enlace:

error LNK2019: símbolo externo irresoluble “public: int __thiscall myIp::Connect(class AnsiString,int,unsigned int)” (?Connect@TIP@@QAEHVAnsiString@@HII_N@Z) al que se hace referencia en la función “int __cdecl checkConnection(void)” (?checkConnection@@YAHXZ)

Estructura de carpetas:

Mi archivo principal: ..\projects\c++\ATT\MyApp–> aquí está todo lo que VS creó cuando comencé mi nueva solución

El archivo myip para incluir: ..\projects\c++\utilities–> aquí están los archivos myIp.h y myIp.cpp

Esto es lo que tengo en VS\Propiedades del proyecto\Directorios de VC++\Directorios de inclusión: ..\projects\c++\utilities

Los archivos myIp no forman parte de un proyecto o solución vinculado a VS, simplemente son implementaciones de clases independientes.

Este es mi código principal:
“`c++
#include <myip.h>

int checkConnection(AnsiString host, int url_port)
{
myIp conn;

if (conn.Connect(host, url_port, 10000))
{
// hacer algo
}

return 0;
}

int main()
{
AnsiString host = “http://10.20.30.40”;
int port = 80;
return checkConnection(host, port);
}


Esta es la declaración de la función en myIp.h:

#ifndef classMYIPH
#define classMYIPH

class myIp
{

public:
myIp();
~myIp();
int Connect(AnsiString ipadr, int port, unsigned int timeoutms=4000, unsigned int tries=1, bool event = false);

};


Esta es la función que estoy llamando en myIp.cpp:

int myIp::Connect(AnsiString host, int port, unsigned int timeoutms, unsigned int tries, bool event)
{
// hacer conexión
// si la conexión tiene éxito, retornar 1, de lo contrario, 0
}
“`</myip.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás enfrentando un error del enlazador al llamar a una función en el objeto myIp en tu proyecto de C++ usando Visual Studio 2019. El mensaje de error indica que hay un símbolo externo no resuelto al llamar a la función Connect() en el archivo myIp.cpp desde la función checkConnection() en el archivo principal.

    Para resolver este problema, primero asegúrate de haber incluido el archivo myIp.h en tu archivo principal usando la directiva #include. Además, verifica si has implementado correctamente la función Connect() en el archivo myIp.cpp, la cual debe coincidir con la declaración en el archivo myIp.h.

    A continuación, parece que el archivo myIp.cpp no forma parte de ningún proyecto o solución en Visual Studio, y estás intentando incluirlo en tu proyecto usando la opción “Include Directories” en VC++ Directories. En su lugar, debes crear un proyecto o solución separada para los archivos de myIp y luego agregar el proyecto o solución a tu proyecto principal como referencia.

    Para crear un proyecto o solución para los archivos de myIp, ve a File > New > Project, selecciona el tipo de proyecto adecuado y da un nombre a tu proyecto. Agrega los archivos myIp.h y myIp.cpp al proyecto y compílalo para crear una biblioteca o archivo objeto.

    Una vez que hayas creado el proyecto o solución para los archivos de myIp, agrégalo a tu proyecto principal como referencia. Para agregar una referencia, haz clic derecho en el proyecto principal en Solution Explorer, selecciona Add > Reference y elige el proyecto myIp de la lista.

    Después de agregar el proyecto myIp como referencia, reconstruye tu proyecto principal y ejecútalo. Esto debería resolver el error del enlazador al llamar a la función Connect() en el archivo myIp.cpp.

    Espero que esto te ayude a resolver tu problema con los errores del enlazador en tu proyecto de C++ usando Visual Studio 2019. ¡Buena suerte!

Comments are closed.