Deze website maakt gebruik van cookies. Waarom? Klik hier voor ons privacy- en cookiebeleid. Door op akkoord te klikken of door gebruik te blijven maken van deze website geeft u aan akkoord te zijn met het gebruik van cookies.

Akkoord

Vraag & Antwoord

Programmeren

[C#] .lib includen in C#

Johan Stokking
9 antwoorden
  • 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.
  • .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.
  • 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).
  • <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 (www.mono-project.com), dus met dat MS-only valt het wel mee :wink:
    </offtopic>
    En dan nu ontopic: deze blogger 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..
  • 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.
  • [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…
  • [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.
  • 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 …
  • Zit de hardware hier bij? http://www.advantech.com.tw/eAutomation/CMScontent-news.asp?doc_id={612E7E22-95F1-42A6-A63F-938C1C3F6E4

    Voor PCI-1735U zag ik dat er een OCX als een DLL bestaat. Dus wat gebruik jij?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.