Dobrý den,
mám prosbu a dotaz. Pro stahování dat z PLC používáme MX Components a z nich knihovnu .dll pro přímé spojení s konkrétním PLC. Dosud jsme data stahovali pomocí vyřazeného PC s WinXP. Rád bych jej vyhodil a přesunul aplikaci pro stahování na Linuxový server. Jedná se o konzolovou aplikaci,která se v pravidelných intervalech připojuje k PLC a stažená data ukládá na SQL server.
Myslel jsem, že bych napsal v Mono aplikaci, která by tuto knihovnu využila. Začal jsem samotnou kostrou
using System;
using ACTETHERLib;
namespace Melsec
{
class Program
{
static void Main(string[] args)
{
ActFXENETTCP plc = new ActFXENETTCP();
Console.WriteLine("Start ...");
}
}
}
Po přeložení
mcs melsec.cs /reference:Interop.ACTETHERLib.dll
mi aplikace chodila chybu
Unhandled Exception:
System.DllNotFoundException: ole32.dll
at (wrapper managed-to-native) System.__ComObject.CoCreateInstance(System.Guid,intptr,uint,System.Guid,intptr&)
at System.__ComObject.CreateIUnknown (System.Type t) [0x00051] in <62351af909f64c3d9f8698380a6f7518>:0
at Mono.Interop.ComInteropProxy.CreateProxy (System.Type t) [0x00000] in <62351af909f64c3d9f8698380a6f7518>:0
at System.Runtime.Remoting.RemotingServices.CreateClientProxyForComInterop (System.Type type) [0x00000] in <62351af909f64c3d9f8698380a6f7518>:0
at System.Runtime.Remoting.Activation.ActivationServices.CreateProxyForType (System.Type type) [0x0003b] in <62351af909f64c3d9f8698380a6f7518>:0
at (wrapper managed-to-native) System.Object.__icall_wrapper_ves_icall_object_new_specific(intptr)
at Melsec.Program.Main (System.String[] args) [0x00000] in <b06b9891e8c04e19803d3da7277465a3>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: ole32.dll
at (wrapper managed-to-native) System.__ComObject.CoCreateInstance(System.Guid,intptr,uint,System.Guid,intptr&)
at System.__ComObject.CreateIUnknown (System.Type t) [0x00051] in <62351af909f64c3d9f8698380a6f7518>:0
at Mono.Interop.ComInteropProxy.CreateProxy (System.Type t) [0x00000] in <62351af909f64c3d9f8698380a6f7518>:0
at System.Runtime.Remoting.RemotingServices.CreateClientProxyForComInterop (System.Type type) [0x00000] in <62351af909f64c3d9f8698380a6f7518>:0
at System.Runtime.Remoting.Activation.ActivationServices.CreateProxyForType (System.Type type) [0x0003b] in <62351af909f64c3d9f8698380a6f7518>:0
at (wrapper managed-to-native) System.Object.__icall_wrapper_ves_icall_object_new_specific(intptr)
at Melsec.Program.Main (System.String[] args) [0x00000] in <b06b9891e8c04e19803d3da7277465a3>:0
Můžete mě prosím pěkně nakopnout, zda je vůbec moje úvaha správná? Můžu pod Mono nějak jednoduše používat knihovny z Windows? Případně zda byste jinou cestou.
Teprve se učím a tak prosím o shovívavost a jen konstruktivní odpovědi. Jsem jen údržbář

Něco jsem zkoušel googlit, ale moc moudrý z toho nejsem.