我正在努力使用P / Invoke和dotnet core preview4。我使用P / Invoke的原因是我可以更好地控制在Mac和Linux上打开文件的方式(查看源代码后不支持某些标志),特别是因为这两个平台是我正在测试的。我尝试了几种尝试使用dylib的方法,但没有任何效果。这是我尝试过的:
DllImport
@rpath
dotnet publish
我想我可能尝试了其他的事情,但我可能已经忘记了。对于我可能做错的事情,我真的很失败。 Project link。要重新创建:
dotnet restore
src
目录中的test
和fsharp
cd fsharp/
sh build-native.sh
cd
来测试目录dotnet run -- 3.2
我的开发环境是:
OS => macOS Sierra
dotnet version => preview4-004233
非常感谢任何帮助!
修改
抱歉,我忘记了错误消息:
Error Message:
System.DllNotFoundException : Unable to load DLL 'MUDT.Native.Apple': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)
Stack Trace:
at MUDT.IO.FileStreamHelper.OpenApple(String filename, OpenFlags flags, Int32 mode)
at MUDT.IO.FileStreamHelper.openHandle(String filename, OpenFlags flags, Int32 mode)
at MUDT.IO.FileStreamHelper.getUnixFileStream(String filename, FileAccess access, Int32 bufferSize)
at MUDT.IO.MemoryMappedFile.partitionFile@95.GenerateNext(IEnumerable`1& next)
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at Microsoft.FSharp.Collections.SeqModule.ToArray[T](IEnumerable`1 source)
at MUDT.IO.MemoryMappedFile.partitionFile(Boolean isRead, MemoryMappedFileStateConfig config)