Hi Isaiah.

Yes, you are probably right. Maybe staticaly compiled Julia would help in 
this case of debugging under msvc.

Another question.

How am I able to call from .NET my own methods written in Julia  ?
How am I able to let know libjulia.dll that such methods exist ?

Thanks.

Stefan.

On Thursday, October 2, 2014 2:53:50 PM UTC+2, Isaiah wrote:
>
> Hi Stefan, I'm not sure. I guess it might be failing the first time it 
> tries to map an executable page. You might find some clues on the llvm 
> mailing list. But the bigger issue is that the msvc debugger won't be very 
> useful because msvc doesn't know anything about the jit'd object format 
> (still ELF I think). If you want to use a debugger you should download the 
> mingw64 tools in readme.windows and use gdb.
> On Oct 2, 2014 3:59 AM, "Stefan Babinec" <[email protected] <javascript:>> 
> wrote:
>
>> Thanks Isaiah.
>>
>> It works.
>>
>> I also tried to pass Julia's system image to jl_init and with the little 
>> help 
>>
>> of SetDllDirectory method it works properly when i try to run it in 
>> console. 
>>
>> *******
>> using System.Runtime.InteropServices;
>>
>> namespace ConsoleApplication1
>> {
>>     class Program
>>     {
>>         [DllImport("kernel32.dll", SetLastError = true)]
>>         static extern bool SetDllDirectory(string lpPathName);
>>
>>         [DllImport("libjulia.dll")]
>>         static extern void jl_init(string message);
>>
>>         [DllImport("libjulia.dll")]
>>         static extern void jl_eval_string(string message);
>>
>>         static void Main(string[] args)
>>         {
>>             
>> SetDllDirectory(@"c:\Users\SB\AppData\Local\Julia-0.3.0\bin\");
>>
>>             jl_init(@"c:\Users\SB\AppData\Local\Julia-0.3.0\bin\"); 
>>
>>             jl_eval_string("print(sqrt(2.0))");
>>         }
>>     }
>> }
>> *******
>>
>> But when I try to run it directly in VS 2103 in (Debug/Release) I get 
>>
>> following error from jl_init:
>>
>> "System.AccesViolationException.
>> Attempted to read or write protected memory. This is often an indication 
>> that 
>>
>> other memory is corrupt."
>>
>> Small piece from :
>>
>> http://social.msdn.microsoft.com/Forums/en-US/8789ea67-fbc5-4a7b-a4eb-d4a8a050d5c1/attempt-to-read-or-write-protected-memory-this-is-often-an-indicating-that-other-memory-is-corrupt
>>
>> "This issue shouldn't happen in managed code. The problem is typically 
>> caused by some component (typically unmanaged, but can also be a bad 
>> P/Invoke signature) that corrupts the program's memory."
>>
>> I tried also to suppress this exception by disabling 
>> "Tools menu ->Options -> Debugging -> General -> Suppress JIT 
>> optimization on module load"
>> but with no success ?
>>
>> Any ideas ?
>>
>> Best regards.
>>
>> Stefan.
>>
>> On Wednesday, October 1, 2014 12:16:15 AM UTC+2, Isaiah wrote:
>>>
>>> The ">" indicates the cmd prompt working directory:
>>> ```
>>> C:\cmn\Julia-0.3.0>bin\ConsoleApplication2.exe
>>> 1.4142135623730951
>>> ```
>>> Otherwise, try passing the bin path as a char* to jl_init as suggested.
>>>
>>>
>>> On Tue, Sep 30, 2014 at 11:24 AM, Stefan Babinec <[email protected]> 
>>> wrote:
>>>
>>>> I've copied exe file directly to julia's bin directory Isaiah.
>>>>
>>>> And I get the above mentioned error when I try to run it in the bin 
>>>> directory.
>>>>
>>>>
>>>> On Tuesday, September 30, 2014 4:57:41 PM UTC+2, Isaiah wrote:
>>>>>
>>>>> Try running it from the Julia directory as `bin\CommandLine2.exe`. 
>>>>> This is very much a minimal example; for general use, the bin directory 
>>>>> should be passed as an argument to `jl_init`:
>>>>>
>>>>> https://github.com/JuliaLang/julia/blob/1ee440bee5035ccb33f82b8a45febd
>>>>> dd2f973baa/src/jlapi.c#L70-L73
>>>>>
>>>>> To go much further than this will really require to dig in to both 
>>>>> jlapi.c and the general Julia source code. Be aware that dealing with 
>>>>> type 
>>>>> translation and garbage collection are both non-trivial. See also 
>>>>> `examples/embedding.c` in the julia tree, and several previous discussion 
>>>>> on the mailing list. 
>>>>>
>>>>> On Tue, Sep 30, 2014 at 9:08 AM, Stefan Babinec <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> Hi Isaiah.
>>>>>>
>>>>>> I tried and got this error:
>>>>>> "System image file " ?l\../lib/julia/sys.ji" not found"
>>>>>>
>>>>>> System Image sys.ji looks to be on his place and I have no problem 
>>>>>> running Julia.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>
>>>>>> On Tuesday, September 30, 2014 2:03:42 PM UTC+2, Isaiah wrote:
>>>>>>>
>>>>>>> I should mention that it is necessary to change the project target 
>>>>>>> CPU from the default Any to x64 or x86 to match the libjulia 
>>>>>>> architecture.
>>>>>>> On Sep 29, 2014 11:58 PM, "Isaiah Norton" <[email protected]> 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I tried this some time ago during 0.2, so to make sure it still 
>>>>>>>> works I made a minimal translation of the embedding example to C#:
>>>>>>>>
>>>>>>>> ```
>>>>>>>> using System;
>>>>>>>> using System.Runtime.InteropServices;
>>>>>>>>
>>>>>>>> namespace ConsoleApplication2
>>>>>>>> {
>>>>>>>>     class Program
>>>>>>>>     {
>>>>>>>>         [DllImport("libjulia.dll")]
>>>>>>>>         static extern void jl_init();
>>>>>>>>         [DllImport("libjulia.dll")]
>>>>>>>>         static extern void jl_eval_string(string message);
>>>>>>>>
>>>>>>>>         static void Main(string[] args)
>>>>>>>>         {
>>>>>>>>             jl_init();
>>>>>>>>             jl_eval_string("print(sqrt(2.0))");
>>>>>>>>         }
>>>>>>>>     }
>>>>>>>> }
>>>>>>>> ```
>>>>>>>>
>>>>>>>> I compiled this, copied the binary into `Julia-0.3.0\bin`, and it 
>>>>>>>> works:
>>>>>>>>
>>>>>>>> ```
>>>>>>>> C:\cmn\Julia-0.3.0>bin\ConsoleApplication2.exe
>>>>>>>> 1.4142135623730951
>>>>>>>> ```
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Sep 29, 2014 at 4:11 PM, Tobias Knopp <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> yep, I have done this (mostly for fun) before and it works. One 
>>>>>>>>> needs some experience with P/Invoke of course but this is no magic 
>>>>>>>>> but 
>>>>>>>>> similar to our ccall.
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>>
>>>>>>>>> Tobi
>>>>>>>>>
>>>>>>>>> Am Montag, 29. September 2014 20:52:10 UTC+2 schrieb Stefan 
>>>>>>>>> Karpinski:
>>>>>>>>>>
>>>>>>>>>> I assume that you can call C libraries from .NET, right? The C 
>>>>>>>>>> library for Julia is libjulia – how to call it from C is explained 
>>>>>>>>>> in the 
>>>>>>>>>> embedding docs, calling it from .NET should be similar. 
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> > On Sep 29, 2014, at 12:37 PM, Guido De Bouver <
>>>>>>>>>> [email protected]> wrote: 
>>>>>>>>>> > 
>>>>>>>>>> > I have not found the C# examples, but I have not looked for 
>>>>>>>>>> them. Sorry for that. 
>>>>>>>>>> > 
>>>>>>>>>> > So, any help on this, how could we call Julia from .NET ???? 
>>>>>>>>>> > 
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>  
>>>>>
>>> 

Reply via email to