Preprocessor directive in C# for importing based on platform

前端 未结 4 1941
别跟我提以往
别跟我提以往 2020-11-28 12:03

Looking for a preprocessor directive in c# for importing dll based on whether the executable is 64bit or 32 bit:

#if WIN64
[DllImport(\"ZLIB64.dll\", Calling         


        
4条回答
  •  旧巷少年郎
    2020-11-28 12:13

    Here's what you need to do.

    First, go into Project-> Properties... and go to the Build tab.

    In there, in the textbox labelled "Conditional compilation symbols", add WIN32 for your x86 platform (selectable at the top of the dialog) and WIN64 for your x64 platform. Then save.

    Note that if you have one for "AnyCPU", you probably want to remove that platform altogether, as it won't be safe.

    Then, go into the source, and write this:

    #if WIN64
        [DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
    #else
        [DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)]
    #endif
    

    Note that when you view the source, one of the lines will look like it has been commented out, in that the entire line is in a gray font. This line is the one for the "other platform". If you select the platform in the toolbar, you'll notice that the syntax coloring follows suit.

    Of course, after re-reading my answer I notice that you don't actually need to put WIN32 into the conditional symbols list as it isn't used, but it might be useful other places to do an #if on WIN32 instead of 64.

提交回复
热议问题