Ga naar inhoud

[C#] .lib includen in C#


Aanbevolen berichten

Hoi, ik heb een aantal I/O-kaarten van Advantech met analoge en digitale in- en uitgangen. Ze leveren netjes voorbeeld programma's bij. Alleen komen zij niet verder als C++. Ze leveren ook de .lib-bestanden. Maar ik heb geen flauw idee hoe je deze moet include in C#. De <include> bestaad namelijk niet meer in C#. Weet iemand raad? Bij voorbaat dank. Greetings, ErX.
Link naar reactie
.lib files kan je niet in C# gebruiken inderdaad. Er zijn wel mogelijke oplossingen voor je. Een mogelijkheid is: Schrijf een unmanaged C++ DLL, en include hierbij de .lib file, en maak extern aanroepbare functies. Vervolgens kan je in C# via P/Invoke die functies aanroepen. Hiervoor is dus wel enige basiskennis van C++ noodzakelijk.
Link naar reactie
  • 3 weken later...
Met Java kun je wrapper schrijven m.b.v. JNI. Nu lijkt C# heel veel op Java, je kent de slechte namen van C# vast wel. Zou MS daarom echt geen JNI-achtig gebeuren zoals Java hebben? Anders zou ik eens nadenken om je horizon wat breder te maken met C++. Oude taal, maar nog steeds samen met C de basistaal met hardware en embedded. Java en C# komen in opkomst, maar vooral C# heeft nog een lange weg te gaan (MS-only vloek).
Link naar reactie
<offtopic>[quote:44385e6bed="Joris"] maar vooral C# heeft nog een lange weg te gaan (MS-only vloek).[/quote:44385e6bed]Uhm, volgens mij bestaat er ook nog iets als het Mono project ([url]www.mono-project.com[/url]), dus met dat MS-only valt het wel mee :wink: </offtopic> En dan nu ontopic: [url=http://geeklit.blogspot.com/2006/08/calling-c-lib-from-c.html]deze blogger[/url] legt uit hoe hij een C++ lib aanroept vanuit C# (zoals Capone ook al zegt). Ik heb het niet helemaal gelezen, maar het zal vast een uitgangspunt kunnen zijn..
Link naar reactie
  • 2 weken later...
Even off. Mono is inderdaad voor Linux, maar het blijft dat MS zelf weinig tot zeer weinig aan .NET beschikbaar maken buiten het MS-platform om. En Mono is niet echt gemakkelijk beschikbaar voor Unix en BSD. Mono blijft daarom ook altijd achter .NET van MS aanlopen. Vandaar dat je nog steeds over de MS-only-vloek kan spreken. Ik snap niet dat MS .NET gewoon helemaal beschikbaar maakt.
Link naar reactie
[quote:b4ca245f30="Joris"]Ik snap niet dat MS .NET gewoon helemaal beschikbaar maakt.[/quote:b4ca245f30]Bekijk het eens vanuit Microsoft: waarom zouden zij .NET beschikbaar moeten maken voor platforms anders dan hun eigen (commerciele) platforms? Kost alleen maar geld en maakt het alleen maar makkelijker om andere (niet-Microsoft) platforms te draaien. Schieten ze niks mee op dus...
Link naar reactie
[quote:23a581555a="Bill Gates"][quote:23a581555a="Joris"]Ik snap niet dat MS .NET gewoon helemaal beschikbaar maakt.[/quote:23a581555a]Bekijk het eens vanuit Microsoft: waarom zouden zij .NET beschikbaar moeten maken voor platforms anders dan hun eigen (commerciele) platforms? Kost alleen maar geld en maakt het alleen maar makkelijker om andere (niet-Microsoft) platforms te draaien. Schieten ze niks mee op dus...[/quote:23a581555a] Omdat je nu duidelijk begint te zien dat MS nu niet meer op de ivoren toren ziet. Je ziet meer en meer dat naast Windows weer gekeken wordt naar andere oplossingen. IT is ingeburgerd en dat resulteert erin dat de consumenten en klanten een grotere vraag naar keuze beginnen op te bouwen. Windows blijft grote markt behouden, maar het is niet meer altijd zo dat Windows de natuurlijke keuze is. MS ziet dat ook wel deels in en geeft daarom wel geld aan het Mono-project. Overigens mijn fout, .NET is beschikbaar voor iedereen. Maar het framework is gesloten. .NET moet ook beschikbaar zijn voor iedereen omdat het samen met Phillips ISO gecertificeerd is.
Link naar reactie
Ja, in principe is het mogelijk om in C# andere functies te gebruiken. Via een DLL of een COM object is de oplossing het eenvoudigste te realiseren. Zelf heb ik een Delphi DLL geschreven om een aantal eigen functies en een paar handige library functies te kunnen gebruiken. En deze DLL maakt ook gebruik van IO poorten. Alleen wanneer je zo'n DLL hebt, dan moet je vaak nog wel even puzzelen om de juiste C# wrapper code te schrijven. Mijn advies om het interface zo eenvoudig mogelijk te laten. Kun je een voorbeeld functie noemen die je graag wilt gebruiken? Welk soort IO vindt er plaats. Rechtsteeks aansturen van een IO poort of wordt dat voor je verborgen gehouden. Dus graag wat meer specifieke informatie, misschien zelfs al een kant en klare oplossing beschikbaar ...
Link naar reactie
  • 1 maand later...
[quote:89961a427a="Bill Gates"][quote:89961a427a="Joris"]Ik snap niet dat MS .NET gewoon helemaal beschikbaar maakt.[/quote:89961a427a]Bekijk het eens vanuit Microsoft: waarom zouden zij .NET beschikbaar moeten maken voor platforms anders dan hun eigen (commerciele) platforms? Kost alleen maar geld en maakt het alleen maar makkelijker om andere (niet-Microsoft) platforms te draaien. Schieten ze niks mee op dus...[/quote:89961a427a] Toch is Microsoft bijgedraaid: http://tweakers.net/nieuws/49653/microsoft-opent-broncode-net-framework.html. Trouwens, je kan met Reflector al sinds jaar en dag de broncode van .NET inzien. Deze disassembleert de libraries en vertaalt de IL code naar leesbare C# code. On-topic: het schrijven van een Managed C++ wrapper is vrij eenvoudig hoor. Je moet wel C++ basiskennis hebben en even weten hoe je (.NET) classes maakt in C++, maar het kan zonder weinig diepgang. Je kunt op internet voldoende informatie hierover vinden.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...