Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов функции из DLL в .NET CF 
:(
    Опции темы
kipelovets
Дата 27.10.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 7.10.2007

Репутация: нет
Всего: нет



добрый день. я пишу приложение на vb.net для windows mobile, и мне нужно вызвать функцию из dll, написанной на c++. но в .net compact framework есть какие-то отличия в этом плане от обычного фреймворка и почему-то примеры типа описанных в этой теме у меня не работают.
кстати, проект на vb.net написан в visual studio 2003 (.net cf 1.1), а dll - в visual studio 2005. но надеюсь причина проблем не в этом...
я создал в visual studio 2005 проект из шаблона Win32 Smart Device Project, Application Type = DLL , с названием dll_test, который экспортирует функцию:
Код

DLL_TEST_API int fndll_test(void)
{
return 42;
}

в visual studio 2003 создал проект на VB.NET Smart Device Application, скопировал в папку с проектом dll_test.dll и убедился, что он копируется на устройство при отладке, добавил определение:
Код

    <DllImport("dll_test.DLL", EntryPoint:="fndll_test", _
       SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Public Shared Function fndll_test() As Int32
    End Function

и вызов фукнции 
Код

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        fndll_test()
End Sub


при вызове fndll_test возникает: An unhandled exception of type 'System.MissingMethodException' occurred in vbtest.exe
PM MAIL   Вверх
diadiavova
Дата 27.10.2008, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Код

Public Declare Lib "dll_test.DLL" Function fndll_test() As Int32

Что-то в этом роде.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
kipelovets
Дата 28.10.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 7.10.2007

Репутация: нет
Всего: нет



Это то же самое
PM MAIL   Вверх
kipelovets
Дата 1.11.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 7.10.2007

Репутация: нет
Всего: нет



после долгих бесплодных брожений по форумам MSDN я наконец решение самым лучшим методом - методом тыка. достаточно в заголовочном файле библиотеки на C++ объявить экспортируемую функцию так:

Код

export "C"
{
    DLL_TEST_API int fndll_test(void)
}


я предполагаю это связано с тем, что компилятор C++ автоматически добавляет в конце имени функции букву A или W (для ANSI и Unicode соответственно) и .NET не может ее найти... 

в общем it just works, всем спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.