Undefined equate after upgrading to FF 3.10

Started by Jean-pierre Leroy, November 03, 2010, 12:15:15 PM

Previous topic - Next topic

Jean-pierre Leroy

Hi Paul,

Thanks for this update; I was able to compile all my FF3 projects with this new version except one.
In this specific project, I include the file winsock2.inc from Jose Roca.
#INCLUDE "winsock2.inc"

If the "Minimum Operating System to Support" is Windows Vista /2008 Server or Windows 7 the project compiles fine.
If the "Minimum Operating System to Support" is Windows 200, Windows XP or Windows 2003 Server I get the error "Undefined equate line 124: %AF_BTM = %AF_BTH

See the screen shot.

Thanks for your help.
Jean-Pierre

José Roca


Jean-pierre Leroy

Hi Jose,

Thanks for your quick answer; I comment the line 124 (%AF_BTM = %AF_BTH) in the file ws2def.inc but then I got another error message in WINSOCK2.INC

Undefined equate line 500: %PF_BTH = %AF_BTH

Do I have to comment this line also ?

I put another screen shot below

Thanks for your support.
Jean-Pierre

José Roca

The attachment includes winsock2.inc and ws2def.inc modified.

Paul Squires

I believe this is the exact same question that another FF user emailed me on last night. It was because of equate errors due to the winsock2 and ws2def includes. I'll follow this thread just in case a better solution comes up.
Paul Squires
PlanetSquires Software

Paul Squires

... looks like Jose has already got that "better solution".  :)
Paul Squires
PlanetSquires Software

Jean-pierre Leroy

Jose, Paul we're almost there ... with the new includes I get now a new message from MPRAPI.INC

Undefined equate %MPRNP_Ipv6 = %RASNP_Ipv6

See a new screen shot below.

PS: the behavior is the same as previously i.e.

With Windows Vista /2008 Server or Windows 7 the project compiles fine.
I get the errror only with Windows 200, Windows XP or Windows 2003 Server.

Thanks for your efforts.
Jean-Pierre

José Roca


José Roca

Developing for deprecated Windows versions (yes, M$ has decided to deprecate XP), has its risks. I had several applications that worked fine with XP, but not with Windows 7.

To solve this problem, I don't override %WINVER and use the customary cbSize = SIZEOF(<name of the structure>), but I check the Windows version and fill the cbSize member with the appropriate value.

Also, Windows 7 requires the use of a manifest with compatibility and trustinfo sections. Otherwise, sometimes Windows will display a warning message when you end the application.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

      <assemblyIdentity version="1.0.0.0"
         processorArchitecture="X86"
         name="ApplicationName"
         type="win32"/>
      <description>Optional description of your application</description>

      <!-- Compatibility section -->
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
         <application>
            <!--The ID below indicates application support for Windows Vista -->
            <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
            <!--The ID below indicates application support for Windows 7 -->
            <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
         </application>
       </compatibility>

      <!-- Trustinfo section -->
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
         <security>
            <requestedPrivileges>
               <requestedExecutionLevel
                  level="asInvoker"
                  uiAccess="false"/>
               </requestedPrivileges>
         </security>
      </trustInfo>

      <dependency>
         <dependentAssembly>
            <assemblyIdentity
               type="win32"
               name="Microsoft.Windows.Common-Controls"
               version="6.0.0.0"
               processorArchitecture="X86"
               publicKeyToken="6595b64144ccf1df"
               language="*" />
         </dependentAssembly>
      </dependency>

   </assembly>


Jean-pierre Leroy

Thanks Jose; it works perfectly with the new version of MPRAPI.INC

By the way I discovered that I could just include IPEXPORT.INC instead of IPHLPAPI.INC for my needs (just need to have the ICMP_ECHO_REPLY structure).

Thanks for your fantastic support.
Jean-Pierre

José Roca

As my headers strictly follow the names (with an .inc extension instead of .h), you only have to look at the MSDN documentation to know which file you need to include.

The MSDN documentation for the ICMP_ECHO_REPLY Structure says:

Header: Ipexport.h (include Iphlpapi.h)

http://msdn.microsoft.com/en-us/library/aa366053%28VS.85%29.aspx

Jean-pierre Leroy

Thanks for the precision.

In this case on the MSDN website they mentionned :

QuoteThe ICMP_ECHO_REPLY structure is defined in the Ipexport.h header file which is automatically included in the Iphlpapi.h header file. The Ipexport.h header file should never be used directly.

But at least it works fine for me when I include only Ipexport.inc ...
Jean-Pierre