[C/C++] GCC-objectfiles in VC++ gebruiken

Pagina: 1
Acties:

  • kapser
  • Registratie: November 2000
  • Laatst online: 23-08 12:44
Ik heb de volgende dingen aangeschaft ( http://nw.com/nw/triklits/ ) en daar moet ik een driver voor compileren. Het lukt me om een exe file te maken, maar ik wil eigenlijk iets programmeren in VC++ Express met de Juce library ( http://www.rawmaterialsoftware.com/juce/ ).

Is het mogelijk om een gecompileerde *.o file ( met gcc ) te gebruiken in visualc++ express ?
Of kan ik hier een DLL van maken en die gebruiken ? Zo ja hoe gaat dit in zijn werk ?

Ik verwacht geen uitgebreid antwoord, maar ik loop een beetje vast in mijn zoekacties. Als iemand een goede tip heeft ( url ) waar ik meer kan vinden is dat ook fijn.

De belangrijkste file out_file.cpp linkt naar een aantal header files die meegeleverd zijn met cygwin/gcc. Ik heb al die directorys in VC++ Express laten includen, maar dat levert een enorme hoeveelheid foutmeldingen op ( voornamelijk omdat het C is en geen C++ lijkt het ).

extern "C" { } eromheen zetten bracht geen uitkomst.

Hoe kan ik, op welke manier dan ook, dit geheel compilen of includen in VC++ ?

Digital Media Generalist. Maker van zwemindex.nl


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
[n00b] en [newbie] zijn geen talen!
titlefix: [c/c++] newbie gcc in vc++ >> [c/c++] gcc in vc++

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Als het goed is moet je gewoon objectfiles kunnen toevoegen aan je project middels een of andere wizard of mogelijk door zelf je makefile te editen. Ik heb zelf geen ervaring met Visual C++, maar het lijkt me dat dit niet al te ver verstopt zal zitten. Kun je niet ergens "add files to project" doen en daar aangeven dat je een .o file wil toevoegen?

Overigens denk ik dat het handiger is gewoon je foutmeldingen op te lossen. Welke meldingen zijn het? En bij welke code krijg je die meldingen?
RobIII schreef op dinsdag 05 december 2006 @ 00:03:
[...]


titlefix: [c/c++] newbie gcc in vc++ >> [c/c++] gcc in vc++
offtopic:
Mijn titelfix is mooier. :+

[ Voor 18% gewijzigd door NMe op 05-12-2006 00:07 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • kapser
  • Registratie: November 2000
  • Laatst online: 23-08 12:44
Nou het zijn 33 fouten.

Wat het meeste voorkomt :
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

verder bijv :
error C2371: 'intptr_t' : redefinition; different basic types
error C2371: 'uintptr_t' : redefinition; different basic types
syntax error : '__int64' should be preceded by ';' ( in een h file die in gcc wel werkt )

Zou het ook mis kunnen gaan opdat bepaalde files ook uit de windows SDK include dir gehaalt worden ?

De volgende "externe" h files worden gebruikt :

#ifdef BSD
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#endif
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <termios.h>

Digital Media Generalist. Maker van zwemindex.nl


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Die object files gaan niet werken, die zijn gebouwd met een hele andere implementatie van de C++ runtime en waarschijnlijk ook andere name mangling. Een dll maken kan wel.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • kapser
  • Registratie: November 2000
  • Laatst online: 23-08 12:44
Ik ben er inmiddels achter dat een DLL in GCC een shared library heet.
Enige basis info over hoe een dll te maken in gcc en deze te linken in vc++ ?

Uiteindelijk moet ik dus gewoon de driver functies kunnen aanspreken vanuit VC++.

routines:
int TL_init() call once to initialize the module. return TRUE if ok.
int TL_open() call to open output device. return TRUE if ok.
TL_close() call to close output device
TL_frame(v,msecs) generate and output data frames to device
TL_mode(bits) call to set output modes (not needed)

Digital Media Generalist. Maker van zwemindex.nl


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

[google=gcc dll tutorial] -> tweede hit lijkt me vrij duidelijk? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • kapser
  • Registratie: November 2000
  • Laatst online: 23-08 12:44
Goede duidelijke link, bedankt.

Nog een vraag.
Wat is handiger om te gebruiken in vc++ een static library *.a file
Of een dynamic library *.dll file.

Heb ik het goed begrepen dat je met het maken van een dll alle functies moet 'declareren' met dllimport / dllexport ( via _declspec ? ).

Of is dit ook te omzeilen, door gebruik te maken van een *.a file ( waar ik overigens niet zoveel over kan vinden.. is dit te renamen naar *.lib ?? ).

Voor het gemak een linkje naar het bestand waar ik een library van wil maken.
http://www.kasperkamperman.com/temp/out_file.txt

Digital Media Generalist. Maker van zwemindex.nl


  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

.a is de extensie van static libraries in Unix en afgeleiden, .lib is de extensie van static libraries in de Windows wereld. Het zijn dus twee totaal verschillende formaten die je NIET zo maar kunt inwisselen. Verder... __declspec() is een MS-specifieke compiler-"optimalisatie" (voor VC) die je KUNT gebruiken om symbolen uit een shared library te exporteren, maar als ik jou was zou ik het eerst op de ouderwetse manier met mingw proberen. ;)

[ Voor 13% gewijzigd door DroogKloot op 05-12-2006 14:47 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
kapser schreef op dinsdag 05 december 2006 @ 09:53:
Wat is handiger om te gebruiken in vc++ een static library *.a file
Of een dynamic library *.dll file.
DLL, want dat werkt wel met je GCC code samen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1