Thread overview
Link woes
Aug 20, 2004
Andy Friesen
Aug 20, 2004
Matthew
Aug 20, 2004
Andy Friesen
Aug 20, 2004
Derek Parnell
Aug 20, 2004
Derek Parnell
Aug 20, 2004
Walter
Aug 20, 2004
J C Calvarese
August 20, 2004
Any idea why this little program fails to link?

    import std.c.windows.windows;

    export extern (Windows) BOOL GetMenuInfo(HMENU hMenu, void* lpcmi);

    int main() {
        return GetMenuInfo(null, null);
    }

The linker complains about a missing "_GetMenuInfo@8". (which should, according to MSDN, be defined in user32.lib)

 -- andy
August 20, 2004
Looks to me like you're trying to export GMI from your exe

"Andy Friesen" <andy@ikagames.com> wrote in message news:cg3md1$2o30$1@digitaldaemon.com...
> Any idea why this little program fails to link?
>
>      import std.c.windows.windows;
>
>      export extern (Windows) BOOL GetMenuInfo(HMENU hMenu, void* lpcmi);
>
>      int main() {
>          return GetMenuInfo(null, null);
>      }
>
> The linker complains about a missing "_GetMenuInfo@8". (which should, according to MSDN, be defined in user32.lib)
>
>   -- andy


August 20, 2004
Matthew wrote:

> Looks to me like you're trying to export GMI from your exe
> 

errr right.  I was at the "try random things to see what happens" stage. :)

Omitting the "export" keyword doesn't have any effect on the error message.

 -- andy
August 20, 2004
On Thu, 19 Aug 2004 19:12:09 -0700, Andy Friesen wrote:

> Any idea why this little program fails to link?
> 
>      import std.c.windows.windows;
> 
>      export extern (Windows) BOOL GetMenuInfo(HMENU hMenu, void* lpcmi);
> 
>      int main() {
>          return GetMenuInfo(null, null);
>      }
> 
> The linker complains about a missing "_GetMenuInfo@8". (which should, according to MSDN, be defined in user32.lib)
> 
>   -- andy

Could it be that you really need GetMenuItemInfo ? Note that there are two versions of that, an ANSI one and a Unicode one.

  GetMenuItemInfoA
  GetMenuItemInfoW

-- 
Derek
Melbourne, Australia
20/Aug/04 12:39:50 PM
August 20, 2004
Looks like user32.lib is out of date.

"Andy Friesen" <andy@ikagames.com> wrote in message news:cg3md1$2o30$1@digitaldaemon.com...
> Any idea why this little program fails to link?
>
>      import std.c.windows.windows;
>
>      export extern (Windows) BOOL GetMenuInfo(HMENU hMenu, void* lpcmi);
>
>      int main() {
>          return GetMenuInfo(null, null);
>      }
>
> The linker complains about a missing "_GetMenuInfo@8". (which should, according to MSDN, be defined in user32.lib)
>
>   -- andy


August 20, 2004
Andy Friesen wrote:
> Any idea why this little program fails to link?
> 
>     import std.c.windows.windows;
> 
>     export extern (Windows) BOOL GetMenuInfo(HMENU hMenu, void* lpcmi);
> 
>     int main() {
>         return GetMenuInfo(null, null);
>     }
> 
> The linker complains about a missing "_GetMenuInfo@8". (which should, according to MSDN, be defined in user32.lib)
> 
>  -- andy

It looks to me like that particular item may be missing from the Digital Mars version of user32.lib. I've run into this problem from time to time. I usually can get it to work by creating my own .def file and using DM's implib.exe to create a better .lib.

implib user32.lib user32.def

(I think the user32.dll has to be in the path environment entry for this to work.)

Here's a .def file that I created previously (it already has "_GetMenuInfo@8 = GetMenuInfo", so hopefully that's a good sign):

LIBRARY user32
EXETYPE NT
SUBSYSTEM WINDOWS
EXPORTS
_EditWndProc@16 = EditWndProc
_RegisterClassA@4 = RegisterClassA
_RegisterClassW@4 = RegisterClassW
_UnregisterClassA@8 = UnregisterClassA
_UnregisterClassW@8 = UnregisterClassW
_GetClassInfoA@12 = GetClassInfoA
_GetClassInfoW@12 = GetClassInfoW
_GetClassWord@8 = GetClassWord
_SetClassWord@12 = SetClassWord
_GetClassLongA@8 = GetClassLongA
_GetClassLongW@8 = GetClassLongW
_SetClassLongA@12 = SetClassLongA
_SetClassLongW@12 = SetClassLongW
_GetClassNameA@12 = GetClassNameA
_GetClassNameW@12 = GetClassNameW
_LookupIconIdFromDirectory@8 = LookupIconIdFromDirectory
_CreateIconFromResource@16 = CreateIconFromResource
_GetIconInfo@8 = GetIconInfo
_CreateIconIndirect@4 = CreateIconIndirect
_LoadMenuA@8 = LoadMenuA
_LoadMenuW@8 = LoadMenuW
_LoadCursorA@8 = LoadCursorA
_LoadCursorW@8 = LoadCursorW
_LoadIconA@8 = LoadIconA
_LoadIconW@8 = LoadIconW
_LoadBitmapA@8 = LoadBitmapA
_LoadBitmapW@8 = LoadBitmapW
_LoadAcceleratorsA@8 = LoadAcceleratorsA
_LoadAcceleratorsW@8 = LoadAcceleratorsW
_LoadStringA@16 = LoadStringA
_LoadStringW@16 = LoadStringW
_GetMessageA@16 = GetMessageA
_GetMessageW@16 = GetMessageW
_PeekMessageA@20 = PeekMessageA
_PeekMessageW@20 = PeekMessageW
_TranslateMessage@4 = TranslateMessage
_DispatchMessageA@4 = DispatchMessageA
_DispatchMessageW@4 = DispatchMessageW
_SetMessageQueue@4 = SetMessageQueue
_GetMessagePos@0 = GetMessagePos
_GetMessageTime@0 = GetMessageTime
_WaitMessage@0 = WaitMessage
_WaitForInputIdle@8 = WaitForInputIdle
_RegisterHotKey@16 = RegisterHotKey
_UnregisterHotKey@8 = UnregisterHotKey
_GetMessageExtraInfo@0 = GetMessageExtraInfo
_AttachThreadInput@12 = AttachThreadInput
_SendMessageA@16 = SendMessageA
_SendMessageW@16 = SendMessageW
_SendMessageTimeoutA@28 = SendMessageTimeoutA
_SendMessageTimeoutW@28 = SendMessageTimeoutW
_SendNotifyMessageA@16 = SendNotifyMessageA
_SendNotifyMessageW@16 = SendNotifyMessageW
_SendMessageCallbackA@24 = SendMessageCallbackA
_SendMessageCallbackW@24 = SendMessageCallbackW
_PostMessageA@16 = PostMessageA
_PostMessageW@16 = PostMessageW
_PostThreadMessageA@16 = PostThreadMessageA
_PostThreadMessageW@16 = PostThreadMessageW
_ReplyMessage@4 = ReplyMessage
_PostQuitMessage@4 = PostQuitMessage
_InSendMessage@0 = InSendMessage
_InSendMessageEx@4 = InSendMessageEx
_RegisterWindowMessageA@4 = RegisterWindowMessageA
_RegisterWindowMessageW@4 = RegisterWindowMessageW
_SwapMouseButton@4 = SwapMouseButton
_GetDoubleClickTime@0 = GetDoubleClickTime
_SetDoubleClickTime@4 = SetDoubleClickTime
_GetSystemMetrics@4 = GetSystemMetrics
_GetSysColor@4 = GetSysColor
_SetSysColors@12 = SetSysColors
_EnumWindows@8 = EnumWindows
_EnumChildWindows@12 = EnumChildWindows
_EnumThreadWindows@12 = EnumThreadWindows
_ShowWindow@8 = ShowWindow
_ShowOwnedPopups@8 = ShowOwnedPopups
_OpenIcon@4 = OpenIcon
_CloseWindow@4 = CloseWindow
_CreateWindowExA@48 = CreateWindowExA
_CreateWindowExW@48 = CreateWindowExW
_DestroyWindow@4 = DestroyWindow
_SetWindowPos@28 = SetWindowPos
_BeginDeferWindowPos@4 = BeginDeferWindowPos
_DeferWindowPos@32 = DeferWindowPos
_EndDeferWindowPos@4 = EndDeferWindowPos
_MoveWindow@24 = MoveWindow
_BringWindowToTop@4 = BringWindowToTop
_LockWindowUpdate@4 = LockWindowUpdate
_UpdateLayeredWindow@36 = UpdateLayeredWindow
_SetLayeredWindowAttributes@16 = SetLayeredWindowAttributes
_DefWindowProcA@16 = DefWindowProcA
_DefWindowProcW@16 = DefWindowProcW
_CallWindowProcA@20 = CallWindowProcA
_CallWindowProcW@20 = CallWindowProcW
_FlashWindow@8 = FlashWindow
_FlashWindowEx@4 = FlashWindowEx
_EnableWindow@8 = EnableWindow
_IsWindowEnabled@4 = IsWindowEnabled
_IsWindowUnicode@4 = IsWindowUnicode
_SetWindowTextA@8 = SetWindowTextA
_SetWindowTextW@8 = SetWindowTextW
_GetWindowTextA@12 = GetWindowTextA
_GetWindowTextW@12 = GetWindowTextW
_GetWindowTextLengthA@4 = GetWindowTextLengthA
_GetWindowTextLengthW@4 = GetWindowTextLengthW
_GetClientRect@8 = GetClientRect
_GetWindowRect@8 = GetWindowRect
_AdjustWindowRect@12 = AdjustWindowRect
_AdjustWindowRectEx@16 = AdjustWindowRectEx
_GetParent@4 = GetParent
_SetParent@8 = SetParent
_FindWindowA@8 = FindWindowA
_FindWindowW@8 = FindWindowW
_GetTopWindow@4 = GetTopWindow
_GetLastActivePopup@4 = GetLastActivePopup
_GetWindow@8 = GetWindow
_ClientToScreen@8 = ClientToScreen
_ScreenToClient@8 = ScreenToClient
_MapWindowPoints@16 = MapWindowPoints
_IsWindow@4 = IsWindow
_IsChild@8 = IsChild
_IsWindowVisible@4 = IsWindowVisible
_IsIconic@4 = IsIconic
_IsZoomed@4 = IsZoomed
_AnyPopup@0 = AnyPopup
_SystemParametersInfoA@16 = SystemParametersInfoA
_SystemParametersInfoW@16 = SystemParametersInfoW
_GetWindowThreadProcessId@8 = GetWindowThreadProcessId
_GetWindowPlacement@8 = GetWindowPlacement
_SetWindowPlacement@8 = SetWindowPlacement
_AnimateWindow@12 = AnimateWindow
_GetProcessDefaultLayout@4 = GetProcessDefaultLayout
_SetProcessDefaultLayout@4 = SetProcessDefaultLayout
_CreateDialogParamA@20 = CreateDialogParamA
_CreateDialogParamW@20 = CreateDialogParamW
_CreateDialogIndirectParamA@20 = CreateDialogIndirectParamA
_CreateDialogIndirectParamW@20 = CreateDialogIndirectParamW
_DialogBoxParamA@20 = DialogBoxParamA
_DialogBoxParamW@20 = DialogBoxParamW
_DialogBoxIndirectParamA@20 = DialogBoxIndirectParamA
_DialogBoxIndirectParamW@20 = DialogBoxIndirectParamW
_EndDialog@8 = EndDialog
_DefDlgProcA@16 = DefDlgProcA
_DefDlgProcW@16 = DefDlgProcW
_GetDlgItem@8 = GetDlgItem
_SetDlgItemInt@16 = SetDlgItemInt
_GetDlgItemInt@16 = GetDlgItemInt
_SetDlgItemTextA@12 = SetDlgItemTextA
_SetDlgItemTextW@12 = SetDlgItemTextW
_GetDlgItemTextA@16 = GetDlgItemTextA
_GetDlgItemTextW@16 = GetDlgItemTextW
_SendDlgItemMessageA@20 = SendDlgItemMessageA
_SendDlgItemMessageW@20 = SendDlgItemMessageW
_CheckDlgButton@12 = CheckDlgButton
_CheckRadioButton@16 = CheckRadioButton
_IsDlgButtonChecked@8 = IsDlgButtonChecked
_GetNextDlgGroupItem@12 = GetNextDlgGroupItem
_GetNextDlgTabItem@12 = GetNextDlgTabItem
_GetDlgCtrlID@4 = GetDlgCtrlID
_GetDialogBaseUnits@0 = GetDialogBaseUnits
_MapDialogRect@8 = MapDialogRect
_IsDialogMessageA@8 = IsDialogMessageA
_IsDialogMessageW@8 = IsDialogMessageW
_IsDialogMessage@8 = IsDialogMessage
_OpenClipboard@4 = OpenClipboard
_CloseClipboard@0 = CloseClipboard
_EnumClipboardFormats@4 = EnumClipboardFormats
_EmptyClipboard@0 = EmptyClipboard
_SetClipboardData@8 = SetClipboardData
_GetClipboardData@4 = GetClipboardData
_RegisterClipboardFormatA@4 = RegisterClipboardFormatA
_RegisterClipboardFormatW@4 = RegisterClipboardFormatW
_IsClipboardFormatAvailable@4 = IsClipboardFormatAvailable
_GetClipboardFormatNameA@12 = GetClipboardFormatNameA
_GetClipboardFormatNameW@12 = GetClipboardFormatNameW
_CountClipboardFormats@0 = CountClipboardFormats
_GetPriorityClipboardFormat@8 = GetPriorityClipboardFormat
_GetClipboardOwner@0 = GetClipboardOwner
_GetClipboardSequenceNumber@0 = GetClipboardSequenceNumber
_GetClipboardViewer@0 = GetClipboardViewer
_SetClipboardViewer@4 = SetClipboardViewer
_ChangeClipboardChain@8 = ChangeClipboardChain
_BeginPaint@8 = BeginPaint
_EndPaint@8 = EndPaint
_GetWindowRgn@8 = GetWindowRgn
_SetWindowRgn@12 = SetWindowRgn
_UpdateWindow@4 = UpdateWindow
_GetUpdateRect@12 = GetUpdateRect
_GetUpdateRgn@12 = GetUpdateRgn
_ExcludeUpdateRgn@8 = ExcludeUpdateRgn
_InvalidateRect@12 = InvalidateRect
_ValidateRect@8 = ValidateRect
_InvalidateRgn@12 = InvalidateRgn
_ValidateRgn@8 = ValidateRgn
_RedrawWindow@16 = RedrawWindow
_SetFocus@4 = SetFocus
_GetFocus@0 = GetFocus
_SetActiveWindow@4 = SetActiveWindow
_GetActiveWindow@0 = GetActiveWindow
_SetForegroundWindow@4 = SetForegroundWindow
_GetForegroundWindow@0 = GetForegroundWindow
_AllowSetForegroundWindow@4 = AllowSetForegroundWindow
_LockSetForegroundWindow@4 = LockSetForegroundWindow
_GetCapture@0 = GetCapture
_SetCapture@4 = SetCapture
_ReleaseCapture@0 = ReleaseCapture
_LoadKeyboardLayoutA@8 = LoadKeyboardLayoutA
_LoadKeyboardLayoutW@8 = LoadKeyboardLayoutW
_ActivateKeyboardLayout@8 = ActivateKeyboardLayout
_UnloadKeyboardLayout@4 = UnloadKeyboardLayout
_GetKeyboardLayoutNameA@4 = GetKeyboardLayoutNameA
_GetKeyboardLayoutNameW@4 = GetKeyboardLayoutNameW
_GetKBCodePage@0 = GetKBCodePage
_GetKeyState@4 = GetKeyState
_GetAsyncKeyState@4 = GetAsyncKeyState
_GetKeyboardState@4 = GetKeyboardState
_SetKeyboardState@4 = SetKeyboardState
_GetKeyNameTextA@12 = GetKeyNameTextA
_GetKeyNameTextW@12 = GetKeyNameTextW
_GetKeyboardType@4 = GetKeyboardType
_ToAscii@20 = ToAscii
_ToUnicode@24 = ToUnicode
_VkKeyScanA@4 = VkKeyScanA
_VkKeyScanW@4 = VkKeyScanW
_GetAltTabInfoA@20 = GetAltTabInfoA
_GetAltTabInfoW@20 = GetAltTabInfoW
_GetAltTabInfo@20 = GetAltTabInfo
_GetAncestor@8 = GetAncestor
_GetComboBoxInfo@8 = GetComboBoxInfo
_GetCursorInfo@4 = GetCursorInfo
_GetGUIThreadInfo@8 = GetGUIThreadInfo
_GetListBoxInfo@4 = GetListBoxInfo
_GetMenuBarInfo@16 = GetMenuBarInfo
_GetScrollBarInfo@12 = GetScrollBarInfo
_GetTitleBarInfo@8 = GetTitleBarInfo
_GetWindowInfo@8 = GetWindowInfo
_GetWindowModuleFileNameA@12 = GetWindowModuleFileNameA
_GetWindowModuleFileNameW@12 = GetWindowModuleFileNameW
_GetWindowModuleFileName@12 = GetWindowModuleFileName
_NotifyWinEvent@16 = NotifyWinEvent
_RealChildWindowFromPoint@12 = RealChildWindowFromPoint
_RealGetWindowClass@12 = RealGetWindowClass
_RealGetWindowClassA@12 = RealGetWindowClassA
_RealGetWindowClassW@12 = RealGetWindowClassW
_SetWinEventHook@28 = SetWinEventHook
_UnhookWinEvent@4 = UnhookWinEvent
_MapVirtualKeyA@8 = MapVirtualKeyA
_MapVirtualKeyW@8 = MapVirtualKeyW
_OemKeyScan@4 = OemKeyScan
_GetInputState@0 = GetInputState
_GetQueueStatus@4 = GetQueueStatus
_MsgWaitForMultipleObjects@20 = MsgWaitForMultipleObjects
_MsgWaitForMultipleObjectsEx@20 = MsgWaitForMultipleObjectsEx
_SetTimer@16 = SetTimer
_KillTimer@8 = KillTimer
_TranslateAcceleratorA@12 = TranslateAcceleratorA
_TranslateAcceleratorW@12 = TranslateAcceleratorW
_TranslateAccelerator@12 = TranslateAccelerator
_LoadMenuIndirectW@4 = LoadMenuIndirectW
_LoadMenuIndirectA@4 = LoadMenuIndirectA
_GetMenu@4 = GetMenu
_SetMenu@8 = SetMenu
_ChangeMenuA@20 = ChangeMenuA
_ChangeMenuW@20 = ChangeMenuW
_HiliteMenuItem@16 = HiliteMenuItem
_GetMenuStringA@20 = GetMenuStringA
_GetMenuStringW@20 = GetMenuStringW
_GetMenuState@12 = GetMenuState
_DrawMenuBar@4 = DrawMenuBar
_GetSystemMenu@8 = GetSystemMenu
_CreateMenu@0 = CreateMenu
_CreatePopupMenu@0 = CreatePopupMenu
_DestroyMenu@4 = DestroyMenu
_CheckMenuItem@12 = CheckMenuItem
_EnableMenuItem@12 = EnableMenuItem
_GetSubMenu@8 = GetSubMenu
_GetMenuItemID@8 = GetMenuItemID
_GetMenuItemCount@4 = GetMenuItemCount
_InsertMenuA@20 = InsertMenuA
_InsertMenuW@20 = InsertMenuW
_AppendMenuA@16 = AppendMenuA
_AppendMenuW@16 = AppendMenuW
_ModifyMenuA@20 = ModifyMenuA
_ModifyMenuW@20 = ModifyMenuW
_RemoveMenu@12 = RemoveMenu
_DeleteMenu@12 = DeleteMenu
_SetMenuItemBitmaps@20 = SetMenuItemBitmaps
_GetMenuCheckMarkDimensions@0 = GetMenuCheckMarkDimensions
_TrackPopupMenu@28 = TrackPopupMenu
_ScrollWindow@20 = ScrollWindow
_ScrollDC@28 = ScrollDC
_ScrollWindowEx@32 = ScrollWindowEx
_SetScrollPos@16 = SetScrollPos
_GetScrollPos@8 = GetScrollPos
_SetScrollRange@20 = SetScrollRange
_GetScrollRange@16 = GetScrollRange
_ShowScrollBar@12 = ShowScrollBar
_SetPropA@12 = SetPropA
_SetPropW@12 = SetPropW
_GetPropA@8 = GetPropA
_GetPropW@8 = GetPropW
_RemovePropA@8 = RemovePropA
_RemovePropW@8 = RemovePropW
_EnumPropsA@8 = EnumPropsA
_EnumPropsW@8 = EnumPropsW
_EnumPropsExA@12 = EnumPropsExA
_EnumPropsExW@12 = EnumPropsExW
_MessageBoxA@16 = MessageBoxA
_MessageBoxW@16 = MessageBoxW
_MessageBoxExA@20 = MessageBoxExA
_MessageBoxExW@20 = MessageBoxExW
_MessageBeep@4 = MessageBeep
_CreateCursor@28 = CreateCursor
_DestroyCursor@4 = DestroyCursor
_CreateIcon@28 = CreateIcon
_DestroyIcon@4 = DestroyIcon
_CreateAcceleratorTableA@8 = CreateAcceleratorTableA
_CreateAcceleratorTableW@8 = CreateAcceleratorTableW
_DestroyAcceleratorTable@4 = DestroyAcceleratorTable
_CopyAcceleratorTableA@12 = CopyAcceleratorTableA
_CopyAcceleratorTableW@12 = CopyAcceleratorTableW
_ShowCursor@4 = ShowCursor
_SetCursorPos@8 = SetCursorPos
_SetCursor@4 = SetCursor
_GetCursorPos@4 = GetCursorPos
_ClipCursor@4 = ClipCursor
_GetClipCursor@4 = GetClipCursor
_GetCursor@0 = GetCursor
_SetSystemCursor@8 = SetSystemCursor
_LoadCursorFromFileA@4 = LoadCursorFromFileA
_LoadCursorFromFileW@4 = LoadCursorFromFileW
_DrawIcon@16 = DrawIcon
_CreateCaret@16 = CreateCaret
_GetCaretBlinkTime@0 = GetCaretBlinkTime
_SetCaretBlinkTime@4 = SetCaretBlinkTime
_DestroyCaret@0 = DestroyCaret
_HideCaret@4 = HideCaret
_ShowCaret@4 = ShowCaret
_SetCaretPos@8 = SetCaretPos
_GetCaretPos@4 = GetCaretPos
_WindowFromPoint@8 = WindowFromPoint
_ChildWindowFromPoint@12 = ChildWindowFromPoint
_GetWindowWord@8 = GetWindowWord
_SetWindowWord@12 = SetWindowWord
_GetWindowLongA@8 = GetWindowLongA
_GetWindowLongW@8 = GetWindowLongW
_SetWindowLongA@12 = SetWindowLongA
_SetWindowLongW@12 = SetWindowLongW
_GetDesktopWindow@0 = GetDesktopWindow
_CreateDesktopA@24 = CreateDesktopA
_CreateDesktopW@24 = CreateDesktopW
_OpenDesktopA@16 = OpenDesktopA
_OpenDesktopW@16 = OpenDesktopW
_OpenInputDesktop@12 = OpenInputDesktop
_SwitchDesktop@4 = SwitchDesktop
_GetInputDesktop@0 = GetInputDesktop
_SetThreadDesktop@4 = SetThreadDesktop
_GetThreadDesktop@4 = GetThreadDesktop
_CloseDesktop@4 = CloseDesktop
_SetDeskWallpaper@4 = SetDeskWallpaper
_EnumDisplayDevicesA@16 = EnumDisplayDevicesA
_EnumDisplayDevicesW@16 = EnumDisplayDevicesW
_EnumDisplaySettingsA@12 = EnumDisplaySettingsA
_EnumDisplaySettingsW@12 = EnumDisplaySettingsW
_EnumDisplaySettingsExA@16 = EnumDisplaySettingsExA
_EnumDisplaySettingsExW@16 = EnumDisplaySettingsExW
_EnumWindowStationsA@8 = EnumWindowStationsA
_EnumWindowStationsW@8 = EnumWindowStationsW
_EnumDesktopsA@12 = EnumDesktopsA
_EnumDesktopsW@12 = EnumDesktopsW
_EnumDesktopWindows@12 = EnumDesktopWindows
_CreateWindowStationA@16 = CreateWindowStationA
_CreateWindowStationW@16 = CreateWindowStationW
_OpenWindowStationA@12 = OpenWindowStationA
_OpenWindowStationW@12 = OpenWindowStationW
_CloseWindowStation@4 = CloseWindowStation
_SetProcessWindowStation@4 = SetProcessWindowStation
_GetProcessWindowStation@0 = GetProcessWindowStation
_SetUserObjectSecurity@12 = SetUserObjectSecurity
_GetUserObjectSecurity@20 = GetUserObjectSecurity
_SetUserObjectInformationW@16 = SetUserObjectInformationW
_SetUserObjectInformationA@16 = SetUserObjectInformationA
_GetUserObjectInformationW@20 = GetUserObjectInformationW
_GetUserObjectInformationA@20 = GetUserObjectInformationA
_DlgDirListA@20 = DlgDirListA
_DlgDirListW@20 = DlgDirListW
_DlgDirSelectExA@16 = DlgDirSelectExA
_DlgDirSelectExW@16 = DlgDirSelectExW
_DlgDirListComboBoxA@20 = DlgDirListComboBoxA
_DlgDirListComboBoxW@20 = DlgDirListComboBoxW
_DlgDirSelectComboBoxExA@16 = DlgDirSelectComboBoxExA
_DlgDirSelectComboBoxExW@16 = DlgDirSelectComboBoxExW
_SetWindowsHookA@8 = SetWindowsHookA
_SetWindowsHookW@8 = SetWindowsHookW
_UnhookWindowsHook@8 = UnhookWindowsHook
_SetWindowsHookExA@16 = SetWindowsHookExA
_SetWindowsHookExW@16 = SetWindowsHookExW
_UnhookWindowsHookEx@4 = UnhookWindowsHookEx
_CallNextHookEx@16 = CallNextHookEx
_CallMsgFilterA@8 = CallMsgFilterA
_CallMsgFilterW@8 = CallMsgFilterW
_CallMsgFilter@8 = CallMsgFilter
_DefFrameProcA@20 = DefFrameProcA
_DefFrameProcW@20 = DefFrameProcW
_DefMDIChildProcA@16 = DefMDIChildProcA
_DefMDIChildProcW@16 = DefMDIChildProcW
_ArrangeIconicWindows@4 = ArrangeIconicWindows
_CascadeChildWindows@8 = CascadeChildWindows
_TileChildWindows@8 = TileChildWindows
_CreateMDIWindowA@40 = CreateMDIWindowA
_CreateMDIWindowW@40 = CreateMDIWindowW
_WinHelpA@16 = WinHelpA
_WinHelpW@16 = WinHelpW
_GrayStringA@36 = GrayStringA
_GrayStringW@36 = GrayStringW
_DrawTextA@20 = DrawTextA
_DrawTextW@20 = DrawTextW
_TabbedTextOutA@32 = TabbedTextOutA
_TabbedTextOutW@32 = TabbedTextOutW
_GetTabbedTextExtentA@20 = GetTabbedTextExtentA
_GetTabbedTextExtentW@20 = GetTabbedTextExtentW
_DrawFocusRect@8 = DrawFocusRect
_GetWindowDC@4 = GetWindowDC
_GetDC@4 = GetDC
_ReleaseDC@8 = ReleaseDC
_WindowFromDC@4 = WindowFromDC
_GetDCEx@12 = GetDCEx
_ExitWindowsEx@8 = ExitWindowsEx
_SetDebugErrorLevel@4 = SetDebugErrorLevel
_FillRect@12 = FillRect
_InvertRect@8 = InvertRect
_FrameRect@12 = FrameRect
_DdeInitializeA@16 = DdeInitializeA
_DdeInitializeW@16 = DdeInitializeW
_DdeUninitialize@4 = DdeUninitialize
_DdeCmpStringHandles@8 = DdeCmpStringHandles
_DdeConnectList@20 = DdeConnectList
_DdeQueryNextServer@8 = DdeQueryNextServer
_DdeDisconnectList@4 = DdeDisconnectList
_DdeConnect@16 = DdeConnect
_DdeDisconnect@4 = DdeDisconnect
_DdeReconnect@4 = DdeReconnect
_DdeQueryConvInfo@12 = DdeQueryConvInfo
_DdeSetUserHandle@12 = DdeSetUserHandle
_DdeAbandonTransaction@12 = DdeAbandonTransaction
_DdePostAdvise@12 = DdePostAdvise
_DdeEnableCallback@12 = DdeEnableCallback
_DdeNameService@16 = DdeNameService
_DdeClientTransaction@32 = DdeClientTransaction
_DdeCreateDataHandle@28 = DdeCreateDataHandle
_DdeAddData@16 = DdeAddData
_DdeGetData@16 = DdeGetData
_DdeAccessData@8 = DdeAccessData
_DdeFreeDataHandle@4 = DdeFreeDataHandle
_DdeUnaccessData@4 = DdeUnaccessData
_DdeGetLastError@4 = DdeGetLastError
_DdeCreateStringHandleA@12 = DdeCreateStringHandleA
_DdeCreateStringHandleW@12 = DdeCreateStringHandleW
_DdeQueryStringA@20 = DdeQueryStringA
_DdeQueryStringW@20 = DdeQueryStringW
_DdeFreeStringHandle@8 = DdeFreeStringHandle
_DdeKeepStringHandle@8 = DdeKeepStringHandle
_DdeImpersonateClient@4 = DdeImpersonateClient
_ImpersonateDdeClientWindow@8 = ImpersonateDdeClientWindow
_DdeSetQualityOfService@12 = DdeSetQualityOfService
_PackDDElParam@12 = PackDDElParam
_UnpackDDElParam@16 = UnpackDDElParam
_FreeDDElParam@8 = FreeDDElParam
_ReuseDDElParam@20 = ReuseDDElParam
_DragObject@20 = DragObject
_DragDetect@12 = DragDetect
_GetOpenClipboardWindow@0 = GetOpenClipboardWindow
_DrawFrame@16 = DrawFrame
_EnableScrollBar@12 = EnableScrollBar
_CopyIcon@4 = CopyIcon
_IsMenu@4 = IsMenu
_SetRect@20 = SetRect
_SetRectEmpty@4 = SetRectEmpty
_CopyRect@8 = CopyRect
_InflateRect@12 = InflateRect
_SubtractRect@12 = SubtractRect
_IntersectRect@12 = IntersectRect
_UnionRect@12 = UnionRect
_OffsetRect@12 = OffsetRect
_IsRectEmpty@4 = IsRectEmpty
_EqualRect@8 = EqualRect
_PtInRect@12 = PtInRect
_wvsprintfA@12 = wvsprintfA
_wvsprintfW@12 = wvsprintfW
_wsprintfA = wsprintfA
_wsprintfW = wsprintfW
_CharLowerA@4 = CharLowerA
_CharLowerW@4 = CharLowerW
_CharUpperA@4 = CharUpperA
_CharUpperW@4 = CharUpperW
_CharNextA@4 = CharNextA
_CharNextW@4 = CharNextW
_CharPrevA@8 = CharPrevA
_CharPrevW@8 = CharPrevW
_IsCharLowerA@4 = IsCharLowerA
_IsCharLowerW@4 = IsCharLowerW
_IsCharUpperA@4 = IsCharUpperA
_IsCharUpperW@4 = IsCharUpperW
_IsCharAlphaA@4 = IsCharAlphaA
_IsCharAlphaW@4 = IsCharAlphaW
_IsCharAlphaNumericA@4 = IsCharAlphaNumericA
_IsCharAlphaNumericW@4 = IsCharAlphaNumericW
_CharLowerBuffA@8 = CharLowerBuffA
_CharLowerBuffW@8 = CharLowerBuffW
_CharUpperBuffA@8 = CharUpperBuffA
_CharUpperBuffW@8 = CharUpperBuffW
_CharToOemA@8 = CharToOemA
_CharToOemW@8 = CharToOemW
_CharToOemBuffA@12 = CharToOemBuffA
_CharToOemBuffW@12 = CharToOemBuffW
_OemToCharA@8 = OemToCharA
_OemToCharW@8 = OemToCharW
_OemToCharBuffA@12 = OemToCharBuffA
_OemToCharBuffW@12 = OemToCharBuffW
_keybd_event@16 = keybd_event
_mouse_event@20 = mouse_event
_SendInput@12 = SendInput
_BlockInput@4 = BlockInput
_GetMouseMovePointsEx@20 = GetMouseMovePointsEx
_GetLastInputInfo@4 = GetLastInputInfo
_SetLastErrorEx@8 = SetLastErrorEx
_BroadcastSystemMessageA@20 = BroadcastSystemMessageA
_BroadcastSystemMessageW@20 = BroadcastSystemMessageW
_BroadcastSystemMessage@20 = BroadcastSystemMessage
_CascadeWindows@20 = CascadeWindows
_ChangeDisplaySettingsA@8 = ChangeDisplaySettingsA
_ChangeDisplaySettingsW@8 = ChangeDisplaySettingsW
_ChangeDisplaySettingsExA@20 = ChangeDisplaySettingsExA
_ChangeDisplaySettingsExW@20 = ChangeDisplaySettingsExW
_CharNextExA@12 = CharNextExA
_CharPrevExA@16 = CharPrevExA
_CheckMenuRadioItem@20 = CheckMenuRadioItem
_ChildWindowFromPointEx@16 = ChildWindowFromPointEx
_CopyImage@20 = CopyImage
_CreateIconFromResourceEx@28 = CreateIconFromResourceEx
_DrawAnimatedRects@16 = DrawAnimatedRects
_DrawCaption@16 = DrawCaption
_DrawEdge@16 = DrawEdge
_DrawFrameControl@16 = DrawFrameControl
_DrawIconEx@36 = DrawIconEx
_DrawStateA@40 = DrawStateA
_DrawStateW@40 = DrawStateW
_DrawTextExA@24 = DrawTextExA
_DrawTextExW@24 = DrawTextExW
_EndMenu@0 = EndMenu
_FindWindowExA@16 = FindWindowExA
_FindWindowExW@16 = FindWindowExW
_GetClassInfoExA@12 = GetClassInfoExA
_GetClassInfoExW@12 = GetClassInfoExW
_GetKeyboardLayout@4 = GetKeyboardLayout
_GetKeyboardLayoutList@8 = GetKeyboardLayoutList
_GetMenuContextHelpId@4 = GetMenuContextHelpId
_GetMenuDefaultItem@12 = GetMenuDefaultItem
_GetMenuInfo@8 = GetMenuInfo
_GetMenuItemInfoA@16 = GetMenuItemInfoA
_GetMenuItemInfoW@16 = GetMenuItemInfoW
_GetMenuItemRect@16 = GetMenuItemRect
_GetScrollInfo@12 = GetScrollInfo
_GetShellWindow@0 = GetShellWindow
_GetSysColorBrush@4 = GetSysColorBrush
_GetWindowContextHelpId@4 = GetWindowContextHelpId
_InsertMenuItemA@16 = InsertMenuItemA
_InsertMenuItemW@16 = InsertMenuItemW
_LoadImageA@24 = LoadImageA
_LoadImageW@24 = LoadImageW
_LookupIconIdFromDirectoryEx@20 = LookupIconIdFromDirectoryEx
_MapVirtualKeyExA@12 = MapVirtualKeyExA
_MapVirtualKeyExW@12 = MapVirtualKeyExW
_MenuItemFromPoint@16 = MenuItemFromPoint
_MessageBoxIndirectA@4 = MessageBoxIndirectA
_MessageBoxIndirectW@4 = MessageBoxIndirectW
_PaintDesktop@4 = PaintDesktop
_RegisterClassExA@4 = RegisterClassExA
_RegisterClassExW@4 = RegisterClassExW
_SetMenuContextHelpId@8 = SetMenuContextHelpId
_SetMenuDefaultItem@12 = SetMenuDefaultItem
_SetMenuInfo@8 = SetMenuInfo
_SetMenuItemInfoA@16 = SetMenuItemInfoA
_SetMenuItemInfoW@16 = SetMenuItemInfoW
_SetMessageExtraInfo@4 = SetMessageExtraInfo
_SetScrollInfo@16 = SetScrollInfo
_SetShellWindow@4 = SetShellWindow
_SetWindowContextHelpId@8 = SetWindowContextHelpId
_ShowWindowAsync@8 = ShowWindowAsync
_TileWindows@20 = TileWindows
_ToAsciiEx@24 = ToAsciiEx
_ToUnicodeEx@28 = ToUnicodeEx
_TrackMouseEvent@4 = TrackMouseEvent
_TrackPopupMenuEx@24 = TrackPopupMenuEx
_TranslateMDISysAccel@8 = TranslateMDISysAccel
_VkKeyScanExA@8 = VkKeyScanExA
_VkKeyScanExW@8 = VkKeyScanExW
_GetGuiResources@8 = GetGuiResources
_RegisterDeviceNotificationA@12 = RegisterDeviceNotificationA
_RegisterDeviceNotificationW@12 = RegisterDeviceNotificationW
_UnregisterDeviceNotification@4 = UnregisterDeviceNotification
_Win32PoolAllocationStats@24 = Win32PoolAllocationStats
_LockWorkStation@0 = LockWorkStation
_UserHandleGrantAccess@12 = UserHandleGrantAccess
_GetMonitorInfoA@8 = GetMonitorInfoA
_GetMonitorInfoW@8 = GetMonitorInfoW
_EnumDisplayMonitors@16 = EnumDisplayMonitors
_MonitorFromPoint@12 = MonitorFromPoint
_MonitorFromRect@8 = MonitorFromRect
_MonitorFromWindow@8 = MonitorFromWindow
_WINNLSGetIMEHotkey@4 = WINNLSGetIMEHotkey
_WINNLSEnableIME@8 = WINNLSEnableIME
_WINNLSGetEnableStatus@4 = WINNLSGetEnableStatus
_SendIMEMessageExW@8 = SendIMEMessageExW
_SendIMEMessageExA@8 = SendIMEMessageExA
_IMPGetIMEW@8 = IMPGetIMEW
_IMPGetIMEA@8 = IMPGetIMEA
_IMPQueryIMEW@4 = IMPQueryIMEW
_IMPQueryIMEA@4 = IMPQueryIMEA
_IMPSetIMEW@8 = IMPSetIMEW
_IMPSetIMEA@8 = IMPSetIMEA


-- 
Justin (a/k/a jcc7)
http://jcc_7.tripod.com/d/
August 20, 2004
On Fri, 20 Aug 2004 12:41:59 +1000, Derek Parnell wrote:

> On Thu, 19 Aug 2004 19:12:09 -0700, Andy Friesen wrote:
> 
>> Any idea why this little program fails to link?
>> 
>>      import std.c.windows.windows;
>> 
>>      export extern (Windows) BOOL GetMenuInfo(HMENU hMenu, void* lpcmi);
>> 
>>      int main() {
>>          return GetMenuInfo(null, null);
>>      }
>> 
>> The linker complains about a missing "_GetMenuInfo@8". (which should, according to MSDN, be defined in user32.lib)
>> 
>>   -- andy
> 
> Could it be that you really need GetMenuItemInfo ? Note that there are two versions of that, an ANSI one and a Unicode one.
> 
>   GetMenuItemInfoA
>   GetMenuItemInfoW

My mistake. GetMenuInfo didn't come up in the SDK index I have on disk but its there on the MSDN web site. I guess I need to update my copy of the SDK!


-- 
Derek
Melbourne, Australia
20/Aug/04 1:25:44 PM