Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa .lib fajlom

[es] :: C/C++ programiranje :: Problem sa .lib fajlom

[ Pregleda: 1637 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Problem sa .lib fajlom10.08.2004. u 01:01 - pre 240 meseci
Do sad sam pravio programe uglavnom u Delphi-u, ali sam od skoro poceo da radim u C++ (MS Visual Studio .Net). Danas sam prvi put pokusao da napravim lib fajl. U njemu se nalazi sledece:

(Proba.cpp)

Code:

#include <d3d9.h>
#include "Proba.h"



//-----------------------------------------------------------------------------
// Global variables
//-----------------------------------------------------------------------------
LPDIRECT3D9 g_pD3D = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;




//-----------------------------------------------------------------------------
// Name: InitD3D()
// Desc: Initializes Direct3D
//-----------------------------------------------------------------------------
extern HRESULT InitD3D( HWND hWnd )
{
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;

    D3DPRESENT_PARAMETERS d3dpp; 
    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.BackBufferWidth = 800;
    d3dpp.BackBufferHeight = 600;
    d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.hDeviceWindow = hWnd;
    d3dpp.Windowed = FALSE;
    d3dpp.EnableAutoDepthStencil = TRUE;
    d3dpp.AutoDepthStencilFormat = D3DFMT_A8R8G8B8;
    d3dpp.FullScreen_RefreshRateInHz = 75;
    d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;

    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_MIXED_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }

    g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );
    g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: Cleanup()
// Desc: Releases all previously initialized objects
//-----------------------------------------------------------------------------
extern void Cleanup()
{
    if( g_pd3dDevice != NULL) 
        g_pd3dDevice->Release();

    if( g_pD3D != NULL)
        g_pD3D->Release();
}


napravio sam i sledeci fajl:

(Proba.h)

Code:

extern HRESULT InitD3D( HWND hWnd );
extern void Cleanup();


Kada build-ujem ovo nema nikakvih greski. Glavni program linkujem sa d3d9.lib i C:\Proba\Proba.lib, u include dodam <d3d9.h> i "C:\Proba\Proba.h". Sve je to lepo, program se builduje bez greske, ali za ove moje dve funkcije se ne pojavljuje Quick Info ToolTips. sta bi trebao da uradim da bi i to radilo lepo?
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
*.212.eunet.yu

Jabber: DarkMan


Profil

icon Re: Problem sa .lib fajlom10.08.2004. u 22:45 - pre 240 meseci
Kao tool tip ce ti se pojaviti komentar koji stoji neposredno pre deklaracije prototipova. Fajl proba.h bi trebao ovako da izgleda:


Code:

#ifndef __PROBA_H__
#define __PROBA_H__

//-----------------------------------------------------------------------------
// Name: InitD3D()
// Desc: Initializes Direct3D
//-----------------------------------------------------------------------------
HRESULT InitD3D( HWND hWnd );

//-----------------------------------------------------------------------------
// Name: Cleanup()
// Desc: Releases all previously initialized objects
//-----------------------------------------------------------------------------
void Cleanup();

#endif // __PROBA_H__
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: Problem sa .lib fajlom11.08.2004. u 00:43 - pre 240 meseci
Znaci samo u .h fajlu u ovakvim slucajevima ne treba export, ok... zapamtio sam. Jos jedno pitanje ono #ifndef..... #endif moze da se uradi i ovako #pragma once Cini mi se da se dobije otprilike isto?
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
*.119.eunet.yu

Jabber: DarkMan


Profil

icon Re: Problem sa .lib fajlom11.08.2004. u 11:14 - pre 240 meseci
Pragma bi trebala bi da daje isti rezultat ali nisam 100% siguran.
Nisam ni siguran da ga podrzavaju svi kompajleri.
Ono sa #ifndef #endif ga garantovano podrzavaju svi.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Problem sa .lib fajlom11.08.2004. u 11:42 - pre 240 meseci
"darko79" wrote:
Citat:
Nisam ni siguran da ga podrzavaju svi kompajleri.
Pragma se i zove pragma jer je ne podržavaju svi kompajleri.

f
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: Problem sa .lib fajlom04.09.2004. u 14:52 - pre 239 meseci
Znam da je verovatno jednostavno, ali jos uvek ne kapiram :)

kad napisem ovako

SLSabiranje.h
Code:

namespace Matematika
{
    int Saberi( int a, int b );
};


SLSabiranje.cpp
Code:

#include "SLSabiranje.h"

extern int Matematika::Saberi( int a, int b )
{
     return a + b;
};


i od toka napravim static library (.lib fajl), zatim napravim program koji se linkuje sa ovim lib fajlom ovako

Sabiranje.cpp
Code:

#include "SLSabiranje.h"

INT WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
    int a = Matematika::Saberi( 1, 2 );
};


kompajler mi izbacuje gresku FirstGame LNK2019: unresolved external symbol

kako bi trebalo ovo da se napise?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem sa .lib fajlom

[ Pregleda: 1637 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.