Ich hab einmal ein Konsolenprojekt und einmal ein WPF projekt...der Code ist der selbe...einmal klappt der import der Dll einmal nicht...warum?
funktioniert mit WPF
Spoiler anzeigen
mit der Konsole kommt die Meldung, dass es im falschen Format wäre...
Spoiler anzeigen
muss man beim importieren von ner Dll bei nem Konsolenprog. was beachten??
funktioniert mit WPF
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace TestOhneWCFdll
- {
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- }
- public void OnClick(object sender, EventArgs e)
- {
- txtBox.Text = DLLCaller.Call();
- }
- }
- public static class DLLCaller
- {
- [DllImport("CallSkalaFkt.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
- private static extern Int32 CallSkalaFkt_SkalaStart(Int32 _hWnd, string _DB_Path, string _GLOB_GUID, string _RG_PATH, Int32 _EE_ID, Int32 _EE_Par, Int32 new_Ring, Int32 _auto_Start, ref Int32 Status_Flag);
- public static string Call()
- {
- System.Threading.Thread.Sleep(1000);
- string _DB_Path = "D:\\Projekte\\Skala_Simu\\Simu\\Glob_Simu.mdb";
- string _GLOB_GUID = "{guid{5ACB1481-2692-4C66-8BBC-9CC8B9FDF0C2}}";
- string _RG_PATH = "D:\\Projekte\\Skala_Simu\\Simu\\";
- Int32 _hWnd = 0;
- Int32 _EE_ID = 1;
- Int32 _EE_Par = 0;
- Int32 new_Ring = 1;
- Int32 _auto_Start = 0;
- Int32 Status_Flag = 0;
- GCHandle m_gch = GCHandle.Alloc(Status_Flag, GCHandleType.Pinned);
- try
- {
- int tmp = CallSkalaFkt_SkalaStart(_hWnd, _DB_Path, _GLOB_GUID, _RG_PATH, _EE_ID, _EE_Par, new_Ring, _auto_Start, ref Status_Flag);
- m_gch.Free();
- return tmp.ToString();
- }
- catch (Exception ex)
- {
- return ex.Message;
- }
- }
- }
- }
XML-Quellcode
- <Window x:Class="TestOhneWCFdll.MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Title="MainWindow" Height="350" Width="525" Background="DarkGray">
- <Grid>
- <Button Content="Klick mich"
- HorizontalAlignment="Left"
- Height="120"
- Margin="128,39,0,0"
- VerticalAlignment="Top"
- Width="249"
- Click="OnClick"
- />
- <TextBox HorizontalAlignment="Left"
- Height="92"
- Margin="95,200,0,0"
- TextWrapping="Wrap"
- Text=""
- FontWeight="Bold"
- VerticalAlignment="Top" Width="325"
- Name="txtBox"/>
- </Grid>
- </Window>
mit der Konsole kommt die Meldung, dass es im falschen Format wäre...
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- namespace ConsoleDll
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine(DLLCaller.Call());
- Console.Read();
- }
- }
- public static class DLLCaller
- {
- [DllImport("CallSkalaFkt.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
- private static extern Int32 CallSkalaFkt_SkalaStart(Int32 _hWnd, string _DB_Path, string _GLOB_GUID, string _RG_PATH, Int32 _EE_ID, Int32 _EE_Par, Int32 new_Ring, Int32 _auto_Start, ref Int32 Status_Flag);
- public static string Call()
- {
- System.Threading.Thread.Sleep(1000);
- string _DB_Path = "D:\\Projekte\\Skala_Simu\\Simu\\Glob_Simu.mdb";
- string _GLOB_GUID = "{guid{5ACB1481-2692-4C66-8BBC-9CC8B9FDF0C2}}";
- string _RG_PATH = "D:\\Projekte\\Skala_Simu\\Simu\\";
- Int32 _hWnd = 0;
- Int32 _EE_ID = 1;
- Int32 _EE_Par = 0;
- Int32 new_Ring = 1;
- Int32 _auto_Start = 0;
- Int32 Status_Flag = 0;
- GCHandle m_gch = GCHandle.Alloc(Status_Flag, GCHandleType.Pinned);
- try
- {
- int tmp = CallSkalaFkt_SkalaStart(_hWnd, _DB_Path, _GLOB_GUID, _RG_PATH, _EE_ID, _EE_Par, new_Ring, _auto_Start, ref Status_Flag);
- m_gch.Free();
- return tmp.ToString();
- }
- catch (Exception ex)
- {
- return ex.Message;
- }
- }
- }
- }
muss man beim importieren von ner Dll bei nem Konsolenprog. was beachten??