Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[C++] Hoe gebruik .dll ipc lib.??

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,
Ik ben absoluut een beginner in C++. Ik gebruik Visual studio 2005 C++, windows XP.
Het kost me nu al meer dan een dag prutsen + zoeken op internet om een project werkend te krijgen, een van de laatste dingen die nu niet lukken is het volgende;

Ik heb een paar .dll's en geen .lib's.

de C++ compiler paden zouden goed moeten staan (at last) maar de foutmelding is nu:

1>LINK : fatal error LNK1181: cannot open input file 'libfftw3f-3.lib'

Naar mijn idee omdat deze file als .dll bestaat en niet als .lib.

Ik weet echt heel weinig van C++ dus kan iemand aub uitleggen in welk menu (project->properties->linker en dan??????) ik de compiler verteld dat hij de .dll pakt??

Alle hulp wordt enorm! gewaardeerd.

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 07:05

BoAC

Memento mori

Om compile-time te linken met een .dll heb je een .lib nodig. Wil je het runtime doen, dan is een .dll en evt. een .h voldoende.

ps. Hier een linkje over hoe je de gewenste libs kan maken :)

[ Voor 36% gewijzigd door BoAC op 10-07-2008 15:57 ]


Verwijderd

Topicstarter
Hi BoAc,

Ok, hoe stel ik runtime linken in?
sorry als dit een stomme vraag is.....

via F1 vind ik dit:

With both implicit and explicit linking, Windows first searches for "known DLLs", such as Kernel32.dll and User32.dll. Windows then searches for the DLLs in the following sequence:
The directory where the executable module for the current process is located.
The current directory.
The Windows system directory. The GetSystemDirectory function retrieves the path of this directory.
The Windows directory. The GetWindowsDirectory function retrieves the path of this directory.
The directories listed in the PATH environment variable.

Waar stel ik de directories voor de PATH enviroment variable in?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

PATH variables (heeft niets met C++ te maken) instellen kan je hier vinden.

Maar als je de volgorde bekijkt (Current Directory etc. etc.) zou het al voldoende moeten zijn om een .dll in je project (debug, run) folder te zetten.

En tot zover gaat mijn kennis van (V)C++. Ik zou zeer zeker de link van BoAC even doornemen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

In short: een DLL is een Dynamic Link Library, een LIB is een Static Link Library. Statisch linken betekent dat de feitelijke code in je executable wordt meegelinkt, en er dus geen externe benodigdheden hebben. Ivm reusability en modulariteit is een DLL vaak preferabel, maar dan moet dus op de 'open plekken' in je executable alsnog code komen te zitten die ervoor zorgt dat deze functies extern in een DLL worden aangeroepen. Dat is dus ook een LIB, maar enkel eentje die 'stubs' verzorgt tussen executable en DLL. Je zult dus zoals BoaC aangeeft puur die dynamische LIB moeten genereren of meelinken.

Professionele website nodig?


Verwijderd

Topicstarter
Bedankt voor jullie antwoorden.

Helaas lukt het mij niet....

De link van Boac was ik al eerder vandaag tegengekomen, dat schiep op dat moment nog geen duidelijkheid dus heb ik toen even gelaten.

Inmiddels staan de dll's in de lib, in de include, in de run en in de project directories maar nog steeds wil het niet lukken.

Ik weet dat het gewerkt heeft met enkel .dll's
Even voor mijn begrip, kan ik in tools->options->VC++ directories iets verkeerd hebben gezet??

Dit is het build log;

Build started: Project: mva, Configuration: Debug|Win32
Command Lines Creating temporary file "c:\Documents and Settings\Jeroen\desktop\Delphi Creations\MVA 13dec Edwin\mva\Debug\RSP0000173016648.rsp" with contents
[
/OUT:"C:\Documents and Settings\Jeroen\desktop\Delphi Creations\MVA 13dec Edwin\Debug\mva.exe" /LIBPATH:"C:\Documents and Settings\Jeroen\desktop\Delphi Creations\MVA 13dec Edwin\mva" /LIBPATH:"C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib\fftw-3.1.2-dll" /LIBPATH:"C:\Documents and Settings\Jeroen\desktop\C++testje\fftw-3.1.2-dll" /MANIFEST /MANIFESTFILE:"Debug\mva.exe.intermediate.manifest" /NODEFAULTLIB:"LIBCMT.lib" /DEBUG /PDB:"c:\Documents and Settings\Jeroen\desktop\Delphi Creations\MVA 13dec Edwin\debug\mva.pdb" /SUBSYSTEM:CONSOLE /LTCG libfftw3f-3.lib libtiff.lib fltkd.lib fltkimagesd.lib fltkjpegd.lib fltkpngd.lib fltkzd.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib

".\Debug\Enhance.obj"

".\Debug\Filter.obj"

".\Debug\Image.obj"

".\Debug\Mathematics.obj"

".\Debug\mva.obj"

".\Debug\Skeleton.obj"
]
Creating command line "link.exe @"c:\Documents and Settings\Jeroen\desktop\Delphi Creations\MVA 13dec Edwin\mva\Debug\RSP0000173016648.rsp" /NOLOGO /ERRORREPORT:PROMPT"
Output Window Linking...
LINK : fatal error LNK1181: cannot open input file 'libfftw3f-3.lib'
Results Build log was saved at "file://c:\Documents and Settings\Jeroen\desktop\Delphi Creations\MVA 13dec Edwin\mva\Debug\BuildLog.htm"
mva - 1 error(s), 0 warning(s)

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 01-11 22:03

leuk_he

1. Controleer de kabel!

Ook met implib kun je uit een dll een lib maken. Zat ook standaard bij visual studio(vorige versie in ieder geval. )

De lib voeg je weer toe in je settings -> linker als additionele lib.

[ Voor 16% gewijzigd door leuk_he op 10-07-2008 16:33 ]

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Verwijderd

Topicstarter
Hi leuk_he,
Moet dat implib vanuit C++ gedaan worden?
Als ik er namelijk op klik, floept er even een venster en dat is dan alles......

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Vanaf de command-line natuurlijk. Je weet sowieso niet helemaal je weg in Windows, of 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.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

Wat aan het stukje "console application" begrijp je niet?

edit:
blast, .oisyn...

[ Voor 22% gewijzigd door TeeDee op 10-07-2008 16:48 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
ok....
alle ins en outs van windows ook niet nee...

ok, ik kan via "run"in het opstartmenu inderdaad implib32 starten maar ik vind het nogal onduidelijk wat ik daarna zou moeten doen/opgeven als commando...

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

Uit de readme.txt:
code:
1
2
3
4
5
6
Usage:
------

Using Implib32 is straight forward:

      ImpLib32 [-d] srcfile[.dll] [outfile[.lib]]

Hoewel ik er van overtuigd ben dat er betere manieren zijn, alleen dat kunnen de (V)C++ mensen je beter vertellen. als het überhaupt al mogelijk is natuurlijk

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Hmm ok, en op mijn computer staat (nog) geen dumpbin.exe....
Ik heb SDK geinstalleerd en windows visual 2005 C++
ontbreekt er iets???

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja, verstand van zaken :P

Start -> Programma's -> Visual Studio -> VS Tools -> Command Prompt.

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.


Verwijderd

Topicstarter
ok, maar dan zonder verstand van zaken; er wordt iets gecreate, er komt zelfs een .lib uit!!!
maar de lib is leeg en de foutmelding is dat 'C:\Program' is not recognized as an internal or external command, operable program or batch file

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Quotes om het pad zetten.

implib32 "c:\program files\sasja\bla.dll" "c:\program files\sasja\bla.lib"

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.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

Ik gok dat Implib32 bij paden met een spatie erin over z'n nek gaat. Vroegah gaf dat inderdaad problemen.

C:\Program Files\toolie\dlls\melp\ zal iets van C:\Progra~1\toolie\dlls\melp\ moeten worden.

Of quotes eromheen zetten.

Niet om lullig te doen, maar je mist essentiële basiskennis van je OS en je begint met C++, een beetje een vreemde combinatie :)

[ Voor 30% gewijzigd door TeeDee op 10-07-2008 17:32 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

TeeDee schreef op donderdag 10 juli 2008 @ 17:01:
Hoewel ik er van overtuigd ben dat er betere manieren zijn, alleen dat kunnen de (V)C++ mensen je beter vertellen. als het überhaupt al mogelijk is natuurlijk
Neuh, VC++ iig vereist een .lib om mee te linken, of een .def om een .lib mee te maken. Als je geen van beide hebt dan zul je idd met een tool als implib32 aan de slag moeten.

Je kunt natuurlijk aan de slag met LoadLibrary() en GetProcAddress() vanuit code, maar daar wordt je niet echt vrolijk van :)

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.


Verwijderd

Topicstarter
bedankt voor de tips, maar dit is het nog niet.... ik had de aanhalingstekens ook gevonden online maar die hielpen niet.

direct op C: zetten (dus zonder programs dir) en levert dezelfde foutlmelding! maar opnieuw een lege .lib

iemand?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

.oisyn schreef op donderdag 10 juli 2008 @ 17:36:
[...]
Neuh, VC++ iig vereist een .lib om mee te linken, of een .def om een .lib mee te maken. Als je geen van beide hebt dan zul je idd met een tool als implib32 aan de slag moeten.
offtopic:
Geef toe dat het vaag is dat je met zo'n externe tool zaken moet gaan linken. Misschien dat dat het manko is van Visual Studio....

Heart..pumps blood.Has nothing to do with emotion! Bored


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

TeeDee schreef op donderdag 10 juli 2008 @ 18:49:
[...]

offtopic:
Geef toe dat het vaag is dat je met zo'n externe tool zaken moet gaan linken. Misschien dat dat het manko is van Visual Studio....
Ik geef toe dat het raar is dat VS niet zo'n tool heeft (is dat trouwens wel zo?), maar doorgaans krijg je gewoon een .lib bij je .dll geleverd om mee te linken :)

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.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

.oisyn schreef op donderdag 10 juli 2008 @ 19:52:
[...]
(is dat trouwens wel zo?)
en
maar doorgaans krijg je gewoon een .lib bij je .dll geleverd om mee te linken :)
Geen idee. Doe niks met VC++ :P

Heart..pumps blood.Has nothing to do with emotion! Bored


  • keavis
  • Registratie: Juli 2008
  • Laatst online: 17-11 22:15
He Sasja,

Ik heb eens ge-googled op die dll van jou (was benieuwd wat het was, lijkt een FFT library te zijn) en kwam op de volgende pagina: http://code.google.com/p/...iveLibraries/libfftw/?r=2 de 'source' van de dll tegen. Hier staan ook de benodigde .def files en de commando's om hiermee jouw gezochte .lib file(s) te genereren. (kijk maar eens in README-WINDOWS).

Ik neem aan dat je er dan verder wel uit komt.

Groeten, Jeroen.

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

TeeDee schreef op donderdag 10 juli 2008 @ 18:49:
[...]

offtopic:
Geef toe dat het vaag is dat je met zo'n externe tool zaken moet gaan linken. Misschien dat dat het manko is van Visual Studio....
Nope, niet zo vaag als je geen source beschikbaar hebt en je enkel een 3rd party .dll hebt waar je statisch mee wil linken.
Voor Windows OS meuk heb je de SDK tenminste beschikbaar.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device

Pagina: 1