1

Тема: не запускается DLL

Написал вот такой DLL файл:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Threading;
using Lua511;
using LuaInterface;



namespace robot1
{
    public class logika
    {
        public void program()
        {
            Lua lua = new Lua();
            lua.DoString("message ('Cкрипта запущен', 2)");
}}}

и такой скрипт в lua:

require("robot1")
function main()
message ("Луа скрипт запущен",1)
end

1. Ни как не могу понять  где луа ищет длл.
2. функция lua.DoString("message ('Cкрипта запущен', 2)"); - выполняет код в моем луа скрипте или внутри длл.

2

Re: не запускается DLL

длл в роди бы нашел

package.path="C:\\Users\\das\\Desktop\\роботы qpile\\роботы C#\\robot1\\robot1\\bin\\Debug\\"
package.cpath = "./?.dll"
require("robot1")

function main()
message ("Луа скрипт запущен",1)
robot1.logika.program()

--sleep(3000000)
end

но при компиляции выдал ошибку

stack traceback:
    [C]: ?
    [C]: in function 'require'
    Dll.lua:3: in main chunk
    [C]: ?

Что это значит

3

Re: не запускается DLL

Это значит, что смешивать managed и unmanaged код для .NET - не так-то просто.
Про DLL на C# - можете забыть.

Люди, ну вот что вы в этом шарпе нашли?? берите Delphi, оно такое же простое, как C#.
Ну или C++, при использовании STL - оно тоже очень просто.

4

Re: не запускается DLL

Забыть про длл на c# потому что сложно???
Не совсем понял чем с++ на столько лучше c#???

5

Re: не запускается DLL

C++ ничем не лучше C#. Как и любой язык программирования ничем не лучше другого.

Речь про сложность сопряжения в данном конкретном  случае, причем суть не в языке программирования, а в платформе .NEТ

Есть предложение: напишите, зачем вы взяли именно C# ? ну кроме того, что вы его, вероятно, знаете. Что именно вы хотите от него получить? какие средства использовать?
Тогда можно будет либо подсказать аналоги, либо напрячься и...

6

Re: не запускается DLL

Планирую в конечном итоге планирую сделать много поточный сетевой клиент сервер.
Думаю что c#, так как это следующая версия c++, более простой
Написание кода в шаре очень похоже на делфи, а все таки для меня выглядит ужасно

7 (2014-04-01 21:55:33 отредактировано swerg)

Re: не запускается DLL

Demian пишет:

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

Сервер, как я понимаю - под квиком? ну тогда сервер - не на шарпе (т.е. не на .NET), клиента - на чем угодно.

Demian пишет:

Думаю что c#, так как это следующая версия c++

Ничего общего вообще, это совершенно разные языки. Только фигурные скобки, как элемент синтаксиса, их единят.

Demian пишет:

Написание кода в шаре очень похоже на делфи, а все таки для меня выглядит ужасно

Если знаете - используйте дельфи. Как минимум с ним нет проблем создания DLL для Lua. (если опять же не использовать .NET вариант дельфи, конечно)

8

Re: не запускается DLL

А может все таки подскажите почему подключить длл не получается.

9 (2014-04-01 22:08:46 отредактировано swerg)

Re: не запускается DLL

Почитайте в гугле "mixing managed and unmanaged code". Там будет написано.
В двух словах - "всё не так" )

Если найдётся достаточное обоснование зачем непременно нужен C# именно под Lua - тогда можно будет заморочиться. Я поглядел - но пока не увидел особой нужны так выворачиваться, да и вопросы производительности сопряжения ужа с ежом надо продумывать.

10

Re: не запускается DLL

Я уже читал в гугле про управляемыми код примеров с луа особенно не нашел, но почиваю еще.
В библиотеке luainterface на сколько я понял есть функции:
Dostring для вывода кода в основной скрипт и registrfunction для того что бы сделать функцию видимой для основного луа скрипта. Если эти функции работают так как я думаю то в чем особенная сложность сделать длл на шарпе???

11 (2014-04-01 22:46:53 отредактировано swerg)

Re: не запускается DLL

Если бы да кабы....
Сложностей - нет. Всё написано.
Но надо делать. Ко сделает - того и пирожок с полки.

А вот в чем особый смысл - мне не понять.

12 (2014-04-02 06:24:14 отредактировано swerg)

Re: не запускается DLL

Посмотрел в приведенный вами код в самом начале.
Я как-то не понял а что именно вы сделали в DLL ? про что код?
Где экспортируемые функции, которые требует Lua?

Вот здесь, начиная со второго сообщения, подробно описана внутренняя структура DLL, которую можно подключить к Lua, указано, какие должны быть экспортируемые функции.

Все это должно быть и в вашей DLL. А т.к. нужных экспортируемых функций, которые ожидает найти Lua, в вашей DLL нет (сужу по приведенным кускам кода)  - но вы ожидаемо сваливаетесь на require, т.е. в тот момент, когда Lua пытается вашу DLL инициализировать.

Пожалуйста, почитайте
http://quik2dde.ru/viewtopic.php?pid=26

13

Re: не запускается DLL

Решил пойти еще более простым путем и настроить обмен данных через сокеты или пайп если такое есть в луа.

14

Re: не запускается DLL

Есть доп. библиотеки, предоставляющие подобный функционал.
Правда на сколько прост этот путь - не понятно. Хотя такое решение - весьма гибкое будет, но делать придётся много.