Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 17

Проблема с экспортом из DLL в C#

28.02.2020, 14:36. Показов 3333. Ответов 23
Метки c#, lua (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день . Нужна помощь профи , проблема в следующе у меня в DLL организовано подключение к Lua через static struct luaL_reg ls_lib[] , и экспорт в vb.net через DllImport\DllExport. С Lua скриптом все работает отлично , а вот экспорт в vb.net не происходит и выдает ошибку "Не удается загрузить DLL "dllTest.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)" Если я удалю регистрацию для Lua "static struct luaL_reg ls_lib[]" экспорит в vb.net происходит отлично но тогда не работает dll с lua. Подскажите пожалуйста как исправить данную проблему .

Код на C++

dlltest.h

C++
1
2
3
4
5
6
7
#pragma once
 
#ifdef EXPORTING_DLL
__declspec(dllexport) const char* GetString(char* s);
#else
__declspec(dllimport) const char* GetString(char* s);
#endif
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#define EXPORTING_DLL
#include <windows.h>
#include "dllTestt.h"
#include <algorithm>
#include <string>
using std::string;
 
 
 
BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
}
   return TRUE;
}
 
 
 
const char* GetString(char* s)
{       
    string workStr(s);      
    int lenStr = workStr.length() + 1;
    char* answer = new char[lenStr];
    const char * constAnswer = new char[lenStr];
    strcpy(answer, workStr.c_str());
    constAnswer = answer;
    return ("Привет");
};
 
 
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================//
static struct luaL_reg ls_lib[] = {
   { "CheckGotPARAMS", forLua_CheckGotPARAMS },
   { NULL, NULL }
};
 
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
 extern "C" LUALIB_API int luaopen_Connector(lua_State *L) {
   luaL_openlib(L, "Connector", ls_lib, 0);
   return 0;
};
Код на vb.net


VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
    
<DllImport("dllTest.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function GetString(ByVal s As String) As IntPtr
    End Function
    Private ptr
 
    Public Function GetString_(ByVal s As String) As String
        ptr = GetString(s)
        Dim answerStr = Marshal.PtrToStringAnsi(ptr)
 
        'TextBox2.Text = TextBox2.Text + 1
        Return answerStr
    End Function
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.02.2020, 14:36
Ответы с готовыми решениями:

Проблема с экспортом
Блин, люди добрые помогите пожалуйста. По нажатию кнопки содержимое dbgrid должно экспортироваться в word. С этим вообще ничего не...

Проблема с экспортом 3DMAX в 3DS
Пытаюсь экспортировать из 3DMAX в формат 3DS , но не сохраняется информация о материалах, тоесть нет ни названия текстур, ничего.

Проблема с DLL
Решил создать библиотеку, которую планирую использовать в нескольких проектах. Задача библиотеки: создать ClientSocket, считать настройки...

23
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 17
01.03.2020, 19:30  [ТС]
Студворк — интернет-сервис помощи студентам
Я понял вас буду искать другое решение моей задачи. Спасибо большое за помощь .
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,776
Записей в блоге: 14
01.03.2020, 19:42
Если приложения два, то требуется IPC.
Например, для quik создаёте dll, которая пишет данные в файл.
И ваше приложение его читает.
0
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 17
01.03.2020, 20:37  [ТС]
Там играет роль скорости поэтому к сожалению передачи данных через файл не подходит. А так можно было и не использовать Dll можно было чтобы скрипт на lua отправлял даные в файл.
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,776
Записей в блоге: 14
01.03.2020, 20:59
Помимо файла есть и другие методы IPC.
Либо иной случай : хостить ваше приложение внутри DLL.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2020, 20:59

Проблема с использованием dll
Не пойму в чем проблема. создал библиотеку с 1 процедурой переноса содержимого adoquery в excel. При использовании данной библиотеки...

Проблема с ucrtbase.dll
Прошу помочь. Не знаю уже, что делать, переставлял windows, переставлял программу в которой работаю, перепробовал все методы в интернете,но...

Проблема с подключением Dll
Добавляю соответствующий референс, пишу using MyDll; и получаю еррор: The type or namespace name 'MyDll' could not be found (are you...

MAPI32.dll проблема
Здравствуйте! Интересный факт, приведенный ниже код работает нормально если установлен пакет Office 2000 и отказывает работать если...

Проблема С Nadsync.dll
Всем привет! Есть проблема с интегрированием Domino Directory с Active Directory при помощи ADSync. При открытии оснастки AD, она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru