c++ library in c#
От: pub123  
Дата: 07.12.07 06:35
Оценка:
в vs2005 создаю проект библиотеки -- Visual C++ > Smart Device > Win32 Smart Device Project в настройках указываю dll
добавляю функцию mymax
#include "stdafx.h"
#include <windows.h>
#include <commctrl.h>

BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    return TRUE;
}

__declspec(dllexport) int mymax(int a, int b)
{
    return a > b ? a : b;
}


проект Visual C# > Smart Device > Pocket PC 2003 > Device Application.


public partial class Form1 : Form
{
        [DllImport("mydll.dll")]
        static extern int mymax(int a, int b);
        public Form1()
        {
            InitializeComponent();
            int i = mymax(32, 12);
        }
}


при выполнении исключение:
MissingMethodException
Can`t find PInvoke DLL



Очевидно в эмуляторе нет этой самой библиотеки. Как сделать чтоб работало? 0о
Re: c++ library in c#
От: Ник  
Дата: 10.12.07 13:34
Оценка: -1
P>
P>public partial class Form1 : Form
P>{
P>        [DllImport("mydll.dll")]
P>        static extern int mymax(int a, int b);
P>        public Form1()
P>        {
P>            InitializeComponent();
P>            int i = mymax(32, 12);
P>        }
P>}
P>


P>при выполнении исключение:

P>MissingMethodException
P>Can`t find PInvoke DLL



P>Очевидно в эмуляторе нет этой самой библиотеки. Как сделать чтоб работало? 0о


по-моему, надо эту mydll.dll добавить как reference в приложение, тогда при компиляции создастся библиотека-обёртка, её и нужно скопировать вместе с этой dll-кой на устройство.
Re: c++ library in c#
От: _Morpheus_  
Дата: 18.12.07 16:57
Оценка:
Здравствуйте, pub123, Вы писали:

P>при выполнении исключение:

P>MissingMethodException
P>Can`t find PInvoke DLL


P>Очевидно в эмуляторе нет этой самой библиотеки. Как сделать чтоб работало? 0о


Нет, просто в твоя DLL'ка не экспортирует функцию с именем "mymax", покажи что ты написал в DEF файле для дллки?
... << RSDN@Home 1.2.0 alpha rev. 676>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.