Smartdeviceapplication

Тема в разделе ".NET", создана пользователем _DeMiUrG_, 23 сен 2007.

  1. _DeMiUrG_

    _DeMiUrG_ Гость

    работаю с Microsoft Visual C# .NET

    есть библиотека скомпилированная для Windows
    в ней функции которые воспринимают в качестве входящих параметров
    указатель на структуру данных

    в основном теле программы я обьявляю структуру данных, обьявляю DLL

    начинаю создавать переменную указатель на структуру в самом теле программы

    Структура кода примерно такова:

    Код (Text):
    using System;
    using System.Drawing;
    using System.Collections;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;

    public struct DLLDATA
    {
    public int X1;
    public int X2;
    public int X3;
    };

    public class Win32
    {
    [DllImport("TEST.dll", CharSet=CharSet.Auto)]
    public static extern long CheckDllDataRange(ref DLLDATA data);
    };

    namespace SmartDeviceApplication2
    {
    public class Form1 : System.Windows.Forms.Form
    {
    ...

    DLLDATA DllData;

    protected override void Dispose( bool disposing )
    { base.Dispose( disposing ); }
    #region Windows Form Designer generated code

    private void InitializeComponent()
    { ... }
    #endregion

    static void Main()
    {
    Application.Run(new Form1());
    }

    private void btnCalc_Click(object sender, System.EventArgs e)
    {
    // DLLDATA DllData = new DLLDATA();
    DllData.X1 = 1;
    DllData.X2 = 2;
    DllData.X3 = 3;

    long range = Win32.CheckDllDataRange(ref DllData);

    y=DllData.spn;
    x = DllData.speedk;
    }//Calc

    билд прошел , А в эмуляторе для Pocket PC
    загружается форма , работают события
    элементов на форме

    а после обращения к фунции содержащейся в DLL
    на private void btnCalc_Click
    идет опять ошибка :

    выдает такую надпись

    "A managed NotSupportedException
    occurred at Application::Run+0x1a

    Application::Run+0x1a
    Form1::Main+0xa
    OK to terminate"

    DLL с другими приложениями работет.

    то сделать тобы DLL заработало в SmartDeviceApplication?
     
  2. _DeMiUrG_

    _DeMiUrG_ Гость

    Пробую писать вот так
    int size = Marshal.SizeOf(DllData);
    IntPtr buffer= Marshal.AllocHGlobal(size);
    Marshal.StructureToPtr(DllData, buffer, false);

    Win32.CheckDllDataRange(buffer);

    Вот на эту строку ругань:
    IntPtr buffer= Marshal.AllocHGlobal(size);
    'System.Runtime.InteropServices.Marshal' does not contain a definition for 'AllocHGlobal'



    Пишу так:
    IntPtr buffer;

    ...
    int size = Marshal.SizeOf(DllData);
    Marshal.StructureToPtr(DllData, buffer, false);
    Win32.CheckDllDataRange(buffer);

    Компилируется но опять ругань на вызов DLL((.
     
  3. Pasha

    Pasha Гость

    Для: _DeMiUrG_
    Эта dll откомпилирована под smart device? Или ты пытаешься win32 dll под windows mobile загрузить?
     
  4. _DeMiUrG_

    _DeMiUrG_ Гость

    да DLL откомпилирована для win32.
    Завтра попробую перекомпилировать для Smart
     
  5. _DeMiUrG_

    _DeMiUrG_ Гость

    :) не так просто ее переделать
    а еще доп работа появилась
    вообщем как что то будет отпишусь
     

Поделиться этой страницей