Nobody???

Dňa pondelok, 2. mája 2016 11:30:11 UTC+2 Ján Adamčák napísal(-a):
>
> Hello,
>
> Trying to create an executable from Julia source, there are questions that 
> raised... The process of exporting functions wasn't successful, function(s) 
> was not exported to dll, and even the generated dll cant be loaded in c++ 
> code. Below is the process explained in details:
>
> Can anybody bring more insight, how to build a standalone executable from 
> Julia source?
>
>
> Following resources were used for experiments below:
>
> http://juliacomputing.com/blog/2016/02/09/static-julia.html
>
> http://juliacomputing.com/blog/2016/03/10/j2c-announcement.html
>
>
> Assume userimg.jl, which contains exported function(s):
> # user functionality for DLL
> @Base.ccallable foo(x::Int) = x+1
>
>
> Now, create a dll:
> julia.exe "build_sysimg.jl" "./Julia/Compile/bin/" native "julia_dll.jl" 
> --force
>
>
>
> File build_sysimg.jl on line 77 contains following command flags:
>            run(`$julia -C $cpu_target --output-ji $sysimg_path.ji 
> --output-o
>            $sysimg_path.o --sysimage ../../../lib/julia/sys.dll -J 
> $inference_path.ji
>            --startup-file=no sysimg.jl --compile=all --eval nothing`)
>
> The resulting dll has 29MB.
>
>
> The next step is to use the dll in c++ project:
> #include <iostream>
> #include <windows.h>
>
> typedef int(*fnc_foo) (int);
>
> int main()
> {
>  HINSTANCE hDLL = LoadLibraryA("test_dll.dll");
>  auto a = GetLastError();
>  if (hDLL == nullptr)
>    throw std::exception("test_dll.dll not found!");
>
>  fnc_foo foo = (fnc_foo)GetProcAddress(hDLL, "foo");
>  if(!foo)
>    throw std::exception("foo in test_dll.dll not found!");
>
>  std::cout << foo(10) << "\n";
>
>  FreeLibrary(hDLL);
>
>  return 0;
> }
>
> In the c++ code above the dll cannot be loaded, hDLL = nullptr, and the 
> first exception is thrown.
>
> Expecting the dll with Dependency Walker even an exported function foo() 
> cannot be found.
>
> Thanks for any suggestions.
> Jan
>

Reply via email to