在C#中使用GDAL写了一个winform工具,想要把这个工具发布为单一exe
但打包运行后会提示:
The type initializer for 'OSGeo.OGR.OgrPINVOKE' threw an exception.
尝试了许多方法都没有解决,有没有解决方案或者说为什么GDAL发布为单一exe会出现这个问题.
在C#中使用GDAL写了一个winform工具,想要把这个工具发布为单一exe
但打包运行后会提示:
The type initializer for 'OSGeo.OGR.OgrPINVOKE' threw an exception.
尝试了许多方法都没有解决,有没有解决方案或者说为什么GDAL发布为单一exe会出现这个问题.
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
这个问题可能是由于GDAL的依赖项没有被正确地打包到你的应用程序中。为了解决这个问题,你可以尝试以下步骤:
确保你已经安装了GDAL的运行时库。你可以从这里下载:https://trac.osgeo.org/osgeo4w/
在你的项目中,确保已经添加了对GDAL的引用。在解决方案资源管理器中右键单击“引用”,然后选择“添加引用”。在弹出的对话框中,浏览到GDAL的安装目录,找到OSGeo.OGR.dll和OSGeo.GDAL.dll文件,将它们添加到项目中。
在你的项目属性中,转到“生成”选项卡,然后在“输出”部分,勾选“嵌入互操作程序集”(Embed Interop Types)。这将确保GDAL的依赖项被嵌入到你的应用程序中。
如果你使用的是Visual Studio,你还可以尝试使用ILMerge工具来合并你的应用程序和GDAL的依赖项。这将创建一个包含所有依赖项的单一exe文件。你可以从这里下载ILMerge:http://www.ilmerge.net/
使用ILMerge的步骤如下:
ILMerge.exe /out:YourOutputExeName.exe YourProjectName.exe OSGeo.OGR.dll OSGeo.GDAL.dll
这将创建一个名为YourOutputExeName.exe的新文件,其中包含了你的应用程序和GDAL的所有依赖项。
尝试这些步骤后,你应该能够成功地将你的C#应用程序与GDAL一起打包为一个单一的exe文件。如果问题仍然存在,请检查你的项目设置和依赖项是否正确配置。