Error lnk2026: module unsafe for safeseh image

82,495

Solution 1

Try to disable SAFESEH.

From spec: /SAFESEH was specified, but a module was not compatible with the safe exception handling feature.

Solution 2

In Visual Studio 2012 Express Edition:

Right-click on your project ->
Properties -> 
Configuration Properties ->
Linker ->
Advanced and changed "Image Has Safe Exception Handlers" to "No (/SAFESEH:NO)"

Solution 3

A picture is worth 0x3e8 words for the /SAFESEH:NO linker setting:

enter image description here

Or you can tell MASM to provide a guarantee that the object contains no exception handlers or that any exception handlers are defined with .SAFESEH, if you know that to be correct for your assembly code:

enter image description here

This will allow you to keep /SAFESEH enabled for the project's linking. But is it correct? You are making the guarantee! Be sure or use the first option.

Share:
82,495
Hoai Dam
Author by

Hoai Dam

Here's my linked in profile: https://www.linkedin.com/in/hoaidv/

Updated on July 09, 2022

Comments

  • Hoai Dam
    Hoai Dam almost 2 years

    I got this error when building a sample visual C++ project. First I downloaded 3 sample projects, all solve the same problem, print out all the prime numbers less than N (you may know these sample projects ?). I built the pure-C project without any problem. But when I tried to build the assembly-based project one, I got this error.

    Thank you.

  • Hoai Dam
    Hoai Dam over 11 years
    I got it, thanks! But is every assembly-based mudule unsafe ? And where can I search for the standard of a SAFE module ?
  • Leo Chapiro
    Leo Chapiro over 11 years
  • mirabilos
    mirabilos over 2 years
    @LeoChapiro thanks! From there (Mike Danes): 「But it seems that it is easy to make masm generate a safeseh object file, just set the Use Safe Exception Handler MASM property to Yes (see Project Properties, Microsoft Macro Assembler, Advanced). • See also the .safeseh MASM directive here: docs.microsoft.com/en-us/cpp/assembler/masm/… but probably you don't need it because your assembly code doesn't really contain any exception handlers.」 (link fixed)