g ++将SDL库链接到OSX上的项目

时间:2018-08-30 13:12:50

标签: c++ makefile sdl linker-errors

我在本地编译了库SDL,并且试图将其链接到项目中。我在OSX上。

但是,如果我仅使用库中的类型变量(声明),则在调用库函数时会被g++困在编译过程中,而库函数会正确编译。

我正在编译以下源代码:

#include <iostream>
#include "SDL_keyboard.h"
#include "SDL_keycode.h"
#include "SDL_scancode.h"

#include "SDL.h"

using namespace std;

int main(int argc, char* argv []) {
  SDL_Event event;
  bool quit=false;
  while(!quit)
  {
      while(SDL_PollEvent(&event))
      {
          if(event.type==SDL_KEYDOWN)
          {
               cout<<"Key dow\n";
          }
          else if(event.type==SDL_QUIT)
          {
              quit=true;
          }
      }
  }
  return 0;
}

使用以下g++命令:

g++ -I../../SDL2-2.0.8/build/include/SDL2/ -L../../SDL2-2.0.8/build/ -lSDL2 -lSDL2d `pkg-config --cflags --libs ../../SDL2-2.0.8/build/lib/pkgconfig/sdl2.pc` -lSDL2 testSDl.cpp -o test

并获得未定义的引用链接错误:

Undefined symbols for architecture x86_64:
  "_AudioObjectAddPropertyListener", referenced from:
      _COREAUDIO_Init in libSDL2.a(SDL_coreaudio.m.o)
      _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
  "_AudioObjectGetPropertyData", referenced from:
      _COREAUDIO_OpenDevice in libSDL2.a(SDL_coreaudio.m.o)
      _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
      _device_unplugged in libSDL2.a(SDL_coreaudio.m.o)
      _build_device_list in libSDL2.a(SDL_coreaudio.m.o)
  "_AudioObjectGetPropertyDataSize", referenced from:
      _build_device_list in libSDL2.a(SDL_coreaudio.m.o)
  "_AudioObjectRemovePropertyListener", referenced from:
      _COREAUDIO_CloseDevice in libSDL2.a(SDL_coreaudio.m.o)
      _COREAUDIO_Deinitialize in 

libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueAllocateBuffer", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueDispose", referenced from:
          _COREAUDIO_CloseDevice in libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueEnqueueBuffer", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
          _inputCallback in libSDL2.a(SDL_coreaudio.m.o)
          _outputCallback in libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueNewInput", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueNewOutput", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueSetProperty", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
      "_AudioQueueStart", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
      "_CFArrayApplyFunction", referenced from:
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
          _AddHIDElement in libSDL2.a(SDL_sysjoystick.c.o)
      "_CFArrayCreate", referenced from:
          _SDL_SYS_JoystickInit in libSDL2.a(SDL_sysjoystick.c.o)
          _Cocoa_InitKeyboard in libSDL2.a(SDL_cocoakeyboard.m.o)
      "_CFArrayGetCount", referenced from:
          _SDL_GetPowerInfo_MacOSX in libSDL2.a(SDL_syspower.c.o)
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
          _AddHIDElement in libSDL2.a(SDL_sysjoystick.c.o)
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CFArrayGetValueAtIndex", referenced from:
          _SDL_GetPowerInfo_MacOSX in libSDL2.a(SDL_syspower.c.o)
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CFDataGetBytePtr", referenced from:
          _UpdateKeymap in libSDL2.a(SDL_cocoakeyboard.m.o)
      "_CFDictionaryCreate", referenced from:
          _CreateHIDDeviceMatchDictionary in libSDL2.a(SDL_sysjoystick.c.o)
      "_CFDictionaryCreateMutable", referenced from:
          _CreateHIDDeviceMatchingDictionary in libSDL2.a(SDL_cocoakeyboard.m.o)
      "_CFDictionaryGetValue", referenced from:
          _MacHaptic_MaybeAddDevice in libSDL2.a(SDL_syshaptic.c.o)
      "_CFDictionaryGetValueIfPresent", referenced from:
          _SDL_GetPowerInfo_MacOSX in libSDL2.a(SDL_syspower.c.o)
      "_CFDictionarySetValue", referenced from:
          _CreateHIDDeviceMatchingDictionary in libSDL2.a(SDL_cocoakeyboard.m.o)
      "_CFGetTypeID", referenced from:
          _AddHIDElement in libSDL2.a(SDL_sysjoystick.c.o)
      "_CFNumberCreate", referenced from:
          _CreateHIDDeviceMatchDictionary in libSDL2.a(SDL_sysjoystick.c.o)
          _CreateHIDDeviceMatchingDictionary in libSDL2.a(SDL_cocoakeyboard.m.o)
      "_CFNumberGetValue", referenced from:
          _SDL_GetPowerInfo_MacOSX in libSDL2.a(SDL_syspower.c.o)
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
          _MacHaptic_MaybeAddDevice in libSDL2.a(SDL_syshaptic.c.o)
      "_CFRelease", referenced from:
          _build_device_list in libSDL2.a(SDL_coreaudio.m.o)
          _SDL_GetPowerInfo_MacOSX in libSDL2.a(SDL_syspower.c.o)
          _SDL_SYS_JoystickInit in libSDL2.a(SDL_sysjoystick.c.o)
          _SDL_SYS_JoystickQuit in libSDL2.a(SDL_sysjoystick.c.o)
          _CreateHIDDeviceMatchDictionary in libSDL2.a(SDL_sysjoystick.c.o)
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
          _MacHaptic_MaybeAddDevice in libSDL2.a(SDL_syshaptic.c.o)
          ...
      "_CFRunLoopGetCurrent", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
          _SDL_SYS_JoystickInit in libSDL2.a(SDL_sysjoystick.c.o)
          _FreeDevice in libSDL2.a(SDL_sysjoystick.c.o)
          _SDL_SYS_JoystickQuit in libSDL2.a(SDL_sysjoystick.c.o)
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
      "_CFRunLoopGetMain", referenced from:
          _Cocoa_InitKeyboard in libSDL2.a(SDL_cocoakeyboard.m.o)
      "_CFRunLoopRunInMode", referenced from:
          _audioqueue_thread in libSDL2.a(SDL_coreaudio.m.o)
          _SDL_SYS_JoystickInit in libSDL2.a(SDL_sysjoystick.c.o)
          _SDL_SYS_JoystickDetect in libSDL2.a(SDL_sysjoystick.c.o)
      "_CFStringCompare", referenced from:
          _SDL_GetPowerInfo_MacOSX in libSDL2.a(SDL_syspower.c.o)
          _GetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CFStringGetCString", referenced from:
          _build_device_list in libSDL2.a(SDL_coreaudio.m.o)
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
          _MacHaptic_MaybeAddDevice in libSDL2.a(SDL_syshaptic.c.o)
      "_CFStringGetLength", referenced from:
          _build_device_list in libSDL2.a(SDL_coreaudio.m.o)
      "_CFStringGetMaximumSizeForEncoding", referenced from:
          _build_device_list in libSDL2.a(SDL_coreaudio.m.o)
      "_CFStringGetSystemEncoding", referenced from:
          _MacHaptic_MaybeAddDevice in libSDL2.a(SDL_syshaptic.c.o)
      "_CFUUIDGetConstantUUIDWithBytes", referenced from:
          _SDL_SYS_HapticEffectType in libSDL2.a(SDL_syshaptic.c.o)
      "_CGAcquireDisplayFadeReservation", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGAssociateMouseAndMouseCursorPosition", referenced from:
          -[Cocoa_WindowListener mouseMoved:] in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_WarpMouseGlobal in libSDL2.a(SDL_cocoamouse.m.o)
          _Cocoa_SetRelativeMouseMode in libSDL2.a(SDL_cocoamouse.m.o)
      "_CGCaptureAllDisplays", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayBounds", referenced from:
          _Cocoa_GetDisplayBounds in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_GetDisplayUsableBounds in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayCapture", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayCopyAllDisplayModes", referenced from:
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayCopyDisplayMode", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayFade", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayIDToOpenGLDisplayMask", referenced from:
          _Cocoa_GL_CreateContext in libSDL2.a(SDL_cocoaopengl.m.o)
      "_CGDisplayIOServicePort", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayIsMain", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayMirrorsDisplay", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayModeCopyPixelEncoding", referenced from:
          _GetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayModeGetHeight", referenced from:
          _GetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayModeGetRefreshRate", referenced from:
          _GetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayModeGetWidth", referenced from:
          _GetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayModeRelease", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_QuitModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayModeRetain", referenced from:
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayMoveCursorToPoint", referenced from:
          -[Cocoa_WindowListener mouseMoved:] in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowGrab in libSDL2.a(SDL_cocoawindow.m.o)
      "_CGDisplayPixelsHigh", referenced from:
          -[Cocoa_WindowListener windowDidMove:] in libSDL2.a(SDL_cocoawindow.m.o)
          -[Cocoa_WindowListener windowDidResize:] in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_CreateWindow in libSDL2.a(SDL_cocoawindow.m.o)
          _SetupWindowData in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowPosition in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowSize in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowFullscreen in libSDL2.a(SDL_cocoawindow.m.o)
          ...
      "_CGDisplayPixelsWide", referenced from:
          _Cocoa_GetDisplayDPI in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayRelease", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplayScreenSize", referenced from:
          _Cocoa_GetDisplayDPI in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGDisplaySetDisplayMode", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGGetDisplayTransferByTable", referenced from:
          _Cocoa_GetWindowGammaRamp in libSDL2.a(SDL_cocoawindow.m.o)
      "_CGGetOnlineDisplayList", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGMainDisplayID", referenced from:
          -[Cocoa_WindowListener windowDidMove:] in libSDL2.a(SDL_cocoawindow.m.o)
          -[Cocoa_WindowListener windowDidResize:] in libSDL2.a(SDL_cocoawindow.m.o)
          -[Cocoa_WindowListener mouseMoved:] in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_CreateWindow in libSDL2.a(SDL_cocoawindow.m.o)
          _SetupWindowData in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowPosition in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowSize in libSDL2.a(SDL_cocoawindow.m.o)
          ...
      "_CGReleaseAllDisplays", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGReleaseDisplayFadeReservation", referenced from:
          _Cocoa_SetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CGSetDisplayTransferByTable", referenced from:
          _Cocoa_SetWindowGammaRamp in libSDL2.a(SDL_cocoawindow.m.o)
      "_CGShieldingWindowLevel", referenced from:
          _Cocoa_SetWindowFullscreen in libSDL2.a(SDL_cocoawindow.m.o)
          _Cocoa_SetWindowGrab in libSDL2.a(SDL_cocoawindow.m.o)
      "_CGWarpMouseCursorPosition", referenced from:
          _Cocoa_WarpMouseGlobal in libSDL2.a(SDL_cocoamouse.m.o)
      "_CVDisplayLinkCreateWithCGDisplay", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_CVDisplayLinkGetNominalOutputVideoRefreshPeriod", referenced from:
          _GetDisplayMode in libSDL2.a(SDL_cocoamodes.m.o)
      "_CVDisplayLinkRelease", referenced from:
          _Cocoa_InitModes in libSDL2.a(SDL_cocoamodes.m.o)
          _Cocoa_GetDisplayModes in libSDL2.a(SDL_cocoamodes.m.o)
      "_FFCreateDevice", referenced from:
          _SDL_SYS_HapticOpenFromService in libSDL2.a(SDL_syshaptic.c.o)
      "_FFDeviceCreateEffect", referenced from:
          _SDL_SYS_HapticNewEffect in libSDL2.a(SDL_syshaptic.c.o)
      "_FFDeviceGetForceFeedbackCapabilities", referenced from:
          _SDL_SYS_HapticOpenFromService in libSDL2.a(SDL_syshaptic.c.o)
      "_FFDeviceGetForceFeedbackProperty", referenced from:
          _SDL_SYS_HapticOpenFromService in libSDL2.a(SDL_syshaptic.c.o)
      "_FFDeviceReleaseEffect", referenced from:
          _SDL_SYS_HapticDestroyEffect in libSDL2.a(SDL_syshaptic.c.o)
      "_FFDeviceSendForceFeedbackCommand", referenced from:
          _SDL_SYS_HapticOpenFromService in libSDL2.a(SDL_syshaptic.c.o)
          _SDL_SYS_HapticPause in libSDL2.a(SDL_syshaptic.c.o)
          _SDL_SYS_HapticUnpause in libSDL2.a(SDL_syshaptic.c.o)
          _SDL_SYS_HapticStopAll in libSDL2.a(SDL_syshaptic.c.o)
      "_FFDeviceSetForceFeedbackProperty", referenced from:
          _SDL_SYS_HapticSetGain in libSDL2.a(SDL_syshaptic.c.o)
          _SDL_SYS_HapticSetAutocenter in libSDL2.a(SDL_syshaptic.c.o)
      "_FFEffectGetEffectStatus", referenced from:
          _SDL_SYS_HapticGetEffectStatus in libSDL2.a(SDL_syshaptic.c.o)
      "_FFEffectSetParameters", referenced from:
          _SDL_SYS_HapticUpdateEffect in libSDL2.a(SDL_syshaptic.c.o)
      "_FFEffectStart", referenced from:
          _SDL_SYS_HapticRunEffect in libSDL2.a(SDL_syshaptic.c.o)
      "_FFEffectStop", referenced from:
          _SDL_SYS_HapticStopEffect in libSDL2.a(SDL_syshaptic.c.o)
      "_FFIsForceFeedback", referenced from:
          _JoystickDeviceWasAddedCallback in libSDL2.a(SDL_sysjoystick.c.o)
          _MacHaptic_MaybeAddDevice in libSDL2.a(SDL_syshaptic.c.o)
      "_FFReleaseDevice", referenced from:
          _SDL_SYS_HapticOpenFromService in libSDL2.a(SDL_syshaptic.c.o)
          _SDL_SYS_HapticClose in libSDL2.a(SDL_syshaptic.c.o)
      "_IODisplayCreateInfoDictionary", referenced from:
          _Cocoa_InitModes in 

[错误仍然存​​在,但时间过长]

我尝试了this solution,但是它不起作用

0 个答案:

没有答案