• Jueves 9 de Mayo de 2024, 12:30

Autor Tema:  Problema con un .h  (Leído 3257 veces)

romo1987

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Problema con un .h
« en: Viernes 6 de Marzo de 2009, 11:38 »
0
Hola, soy nuevo en el foro  ^_^

Escribo para ver si alguien puede echarme una manita. Como parte de un proyecto para la universidad, quiero reproducir mp3 desde mi programa hecho en C++ con Visual Studio 2008.

Estuve buscando un poquito, y la solucion más sencilla que encontre utiliza CMP3_MCI.h

Así que, me baje ese ejemplo de internet, lo compilo... y nada, error:

fatal error C1083: Cannot open include file: 'CMP3_MCI.h': No such file or directory

La cuestión es que no parece encontrarme mi CMP3_MCI.h, y no entiendo por qué. En el explorador de soluciones lo tengo dentro de la carpeta Header files, y además lo metí en el directorio donde esta el .cpp del programa.

Sin embargo no parece encontrarlo. ¿Tengo que linkarlo de alguna manera en particular y por eso no me funciona? Agradecería que alguien me ayudase con esto :)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Problema con un .h
« Respuesta #1 en: Viernes 6 de Marzo de 2009, 14:20 »
0
¿Lo has puesto entre comillas?

Código: C
  1. #include "cmp3_mci.h"
  2.  
Los <> son para las librerías estándar solamente.

Salud

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con un .h
« Respuesta #2 en: Viernes 6 de Marzo de 2009, 19:04 »
0
En realidad:
#include

Syntax:
    #include <filename>
    #include "filename"

This command slurps in a file and inserts it at the current location. The main difference between the syntax of the two items is that if filename is enclosed in angled brackets, then the compiler searches for it somehow. If it is enclosed in quotes, then the compiler doesn't search very hard for the file.

While the behavior of these two searches is up to the compiler, usually the angled brackets means to search through the standard library directories, while the quotes indicate a search in the current directory. The spiffy new C++ #include commands don't need to map directly to filenames, at least not for the standard libraries. That's why you can get away with

     #include <iostream>

…and not have the compiler choke on you.


http://www.cppreference.com/wiki/preprocessor/include

Syntax Form    Action
Quoted form ("")   This form instructs the preprocessor to look for include files in the same directory of the file that contains the #include statement, and then in the directories of any files that include (#include) that file. The preprocessor then searches along the path specified by the /I compiler option, then along paths specified by the INCLUDE environment variable.
Angle-bracket (<>) form    This form instructs the preprocessor to search for include files first along the path specified by the /I compiler option, then, when compiling from the command line, along the path specified by the INCLUDE environment variable.

The #include Directive.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

romo1987

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema con un .h
« Respuesta #3 en: Viernes 6 de Marzo de 2009, 22:30 »
0
Gracias x la aclaracion, ya no se me olvidará más jejeje.

Ahora estoy obteniendo 4 errores LNK2019:
Error   1   error LNK2019: unresolved external symbol "public: int __thiscall WMp3::Play(void)" (?Play@WMp3@@QAEHXZ) referenced in function _main   example.obj   PruebaMP3

Y otros 3 más parecidos...

Busqué en google al respecto y hablan de propiedades de diversos tipos de proyectos de los que ni he oido hablar, ni se que significan. Si me echan otra manita ya quedan ud. como reyes jaja  :D

(Si viene con explicacion para dummies como antes, mejor, que es mejor aprender pk chilla el compilador a que te loa rreglen sin mas jeje  :beer: )

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con un .h
« Respuesta #4 en: Sábado 7 de Marzo de 2009, 00:32 »
0
En realidad ahora no es un problema de compilacion sino de enlazado, tenes la cabecera (cmp3_mci.h) con las declaraciones pero no tenes el codigo binario, este tiene que venir o en un archivo de codigo objeto (.obj), libreria estatica (.lib) o libreria dinamica (.dll al final pero con su .lib de importacion para el enlazado).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

romo1987

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema con un .h
« Respuesta #5 en: Sábado 7 de Marzo de 2009, 01:01 »
0
Si, por el prefijo del error ya sabia que era cosa del linker, pero no se que es lo que tengo que hacer.   :no:  ¿Me iluminas por favor? jeje  :D

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con un .h
« Respuesta #6 en: Sábado 7 de Marzo de 2009, 01:14 »
0
Cita de: "romo1987"
Si, por el prefijo del error ya sabia que era cosa del linker, pero no se que es lo que tengo que hacer.   :no:  ¿Me iluminas por favor? jeje  :D

Esto era lo ultimo que habias dicho: (Si viene con explicacion para dummies como antes, mejor, que es mejor aprender pk chilla el compilador a que te loa rreglen sin mas jeje)  ;)

El enlazador necesita resolver las funciones/metodos de ese modulo, solo tenes la declaracion en el .H y eso no le sirve al enlazador, si solo bajaste ese archivo de cabecera (.H) no vas a poder solucionar el problema hasta que consigas el codigo. Este puede llegar a ser un .c/.cpp con lo cual deberias compilarlo dentro de tu proyecto o un .obj/.lib que debes enlazarlo. No conozco esa libreria asi que los detalles los tenes que averiguar por tu cuenta.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

romo1987

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema con un .h
« Respuesta #7 en: Sábado 7 de Marzo de 2009, 01:18 »
0
Al bajarlo, todo lo que venian eran 2 archivos: MP3UsingMCI.cpp (con el codigo principal con el main) y el de cabecera CMP3_MCI.h.

He creado un proyecto de consola win32 y los he metido al explorador de soluciones, uno como header y otro como source.

No se lo que tengo que hacer ahora, nunca me habia pasado algo asi con el linker... suponia que a partir del codigo lo obtenia todo.

La cabecera empieza asi:

#ifndef _MP3_USING_MCI
#define _MP3_USING_MCI

#include <string>
#include <windows.h>
#include <mmsystem.h>
class CMP3_MCI
{
...

romo1987

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema con un .h
« Respuesta #8 en: Martes 17 de Marzo de 2009, 18:12 »
0
He estado estudiandome mejor el ejemplo y me doi cuenta de que el autor indica que debo incluir:

Required Header File:   mmsystem.h
Required Library File:           winmm.lib

En el código veo como mete el .h con un #include, pero el lib no se como enlazarlo al proyecto. Se que es relativo al linker, que anda por ahi por las opciones... pero no logro situar exactamente a donde tengo que ir. Una ayudita por favor? :)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con un .h
« Respuesta #9 en: Martes 17 de Marzo de 2009, 18:17 »
0
Busca mejor o usa esta extension no standard en el codigo:
#pragma comment(lib, "winmm.lib")

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

romo1987

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema con un .h
« Respuesta #10 en: Martes 17 de Marzo de 2009, 19:01 »
0
Ok, funciona, muchas gracias! :D

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con un .h
« Respuesta #11 en: Martes 17 de Marzo de 2009, 21:29 »
0
De nadas  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.