一般划水斯卡蒂 2024-08-15 14:57 采纳率: 72.7%
浏览 86
已结题

C#中使用GDAL打包

在C#中使用GDAL写了一个winform工具,想要把这个工具发布为单一exe
但打包运行后会提示:

The type initializer for 'OSGeo.OGR.OgrPINVOKE' threw an exception.

尝试了许多方法都没有解决,有没有解决方案或者说为什么GDAL发布为单一exe会出现这个问题.

  • 写回答

9条回答 默认 最新

  • 一直免费一直爽 2024-08-15 14:57
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题可能是由于GDAL的依赖项没有被正确地打包到你的应用程序中。为了解决这个问题,你可以尝试以下步骤:

    1. 确保你已经安装了GDAL的运行时库。你可以从这里下载:https://trac.osgeo.org/osgeo4w/

    2. 在你的项目中,确保已经添加了对GDAL的引用。在解决方案资源管理器中右键单击“引用”,然后选择“添加引用”。在弹出的对话框中,浏览到GDAL的安装目录,找到OSGeo.OGR.dll和OSGeo.GDAL.dll文件,将它们添加到项目中。

    3. 在你的项目属性中,转到“生成”选项卡,然后在“输出”部分,勾选“嵌入互操作程序集”(Embed Interop Types)。这将确保GDAL的依赖项被嵌入到你的应用程序中。

    4. 如果你使用的是Visual Studio,你还可以尝试使用ILMerge工具来合并你的应用程序和GDAL的依赖项。这将创建一个包含所有依赖项的单一exe文件。你可以从这里下载ILMerge:http://www.ilmerge.net/

      使用ILMerge的步骤如下:

      • 打开命令提示符或终端。
      • 导航到ILMerge的安装目录。
      • 运行以下命令(确保替换为你的项目名称和输出文件名):
      ILMerge.exe /out:YourOutputExeName.exe YourProjectName.exe OSGeo.OGR.dll OSGeo.GDAL.dll
      

      这将创建一个名为YourOutputExeName.exe的新文件,其中包含了你的应用程序和GDAL的所有依赖项。

    尝试这些步骤后,你应该能够成功地将你的C#应用程序与GDAL一起打包为一个单一的exe文件。如果问题仍然存在,请检查你的项目设置和依赖项是否正确配置。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月15日
  • 创建了问题 8月15日