LoadLibrary fails with 0xC000001D on XP embedded, but runs as expected on XP Pro

653 views Asked by At

I've a number of rather old in-proc ATL COM servers, formerly built using VC++ 2005.

Now these projects were ported to VC++ 2015.
Since I need to support legacy Win XP systems, platform toolset is "VS 2015 - Windows XP". Also, according to this issue, /Zc:threadSafeInit- compiler option is set.

All of servers are written using ATL attributes, there are something like this in each project:

[module(dll, uuid = "{E49F47F5-C0E2-4C1D-8C66-BF8AE6DDF5A1}",
    name = "MyLib",
    helpstring = "MyLib 1.0 Type Library",
    resource_name = "IDR_MYLIB")]
class CMyLibModule
{
public:
    // Override CAtlDllModuleT members
};

The problem. All these projects runs fine on WinXP Pro. But when I try to register them on XP Embedded machine, I get 0xC000001D error code on LoadLibrary call.

How can I fix/diagnose this error?

P.S. If this makes sense, XP embedded system is built on top AMD Geode processor, while XP Pro system is on top of regular Intel processor.

1

There are 1 answers

3
Dennis On

I've figured out, what's the problem.
The issue is in combination of Geode processor and instruction set used by VC++ compiler by default - SSE2 for x86 projects. This works on modern and/or "mature" processors, but fails on Geode.

After changing this option to SSE, everything works fine:

enter image description here