C# Native DLL [acemiye yardım]

Başlatan cetin1990, 24 Ocak 2018, 16:33:08

cetin1990

 C# bilgim az.  vb.net ile kullanmak için kod var. Sorunsuz çalışıyor. Fakat c# ile nasıl kullanacağımı kestiremedim.

c# ile boş bir form uygulaması açtım. Üzerine textbox ekledim.  vbnet projesi de aynen bu şekilde.
Proje klasörüne DLL dosyayı bıraktım. Uyarlaması kaldı.

C# uyarlama için yardımcı olarabilir misiniz?


Çalışan VbNET kod:

Public Class Form1
    <DllImport("PORT.dll", EntryPoint:="PORTStart")> _
    Public Shared Sub _
        PORTStart()

    End Sub

    <DllImport("PORT.dll", EntryPoint:="PORTData")> _
    Public Shared Function PORTData() As String

    End Function


    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim temp As String
        temp = PORTData()
        If temp <> "" Then
            TextBox1.Text = temp 
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        PORTStart()
        Timer1.Enabled = True

    End Sub


c# deneme kod
namespace WindowsFormsApplication1
{
   

    public partial class Form1 : Form
    {
           [DllImport("PORT.dll")]  ??????????????????   
                public ??????????????????   

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
 

        }
    }
}


ladybird

Hocam usb üzerinden veri okuyağınızı sanıyorum.Vide c# için anlatıyor.
https://www.youtube.com/watch?v=384b5q3HlcY
"Bana ait sözcükler olsun isterdim. Ama kullandığım bu sözcükler, bilmiyorum kaç bilinçte sürüklendi." Jean Paul Sartre

foseydon

Hocam aynı vb kısımdaki gibi yazıyorsun. Dllimport, entrypoint. Sonra fonksiyonu tanımlıyorsun ikinci satırda. Yanlış hatırlamıyorsam fonksiyonun footprinti aynı olmak zorunda. Yani dolayı içindeki fonksiyon int dönüyorsa senin fonksiyonda int dönmeli. Tam emin değilim. Ama extern be static tanımlı olmalı.

[DllImport("PORT.dll", EntryPoint = "PORTData")]
Public static extern void PORTData();

leblebitozu

#3
    [DllImport("PORT.dll", EntryPoint = "PORTStart")]
    public static void PORTStart()
    {
    }

    [DllImport("PORT.dll", EntryPoint = "PORTData")]
    public static string PORTData()
    {
    }

    private void Timer1_Tick(System.Object sender, System.EventArgs e)
    {
        string temp;
        temp = PORTData();
        if (temp != "")
        {
            TextBox1.Text = temp;
        }
    }

    private void Form1_Load(System.Object sender, System.EventArgs e)
    {
        PORTStart();
        Timer1.Enabled = true;
    }