diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.1.1
+
+- Fixed linker issues.
+- Added flag to select stdcall.
+
 ## 0.1.0.3
 
 - Fixed alcOpenDevice.
diff --git a/al.cabal b/al.cabal
--- a/al.cabal
+++ b/al.cabal
@@ -1,5 +1,5 @@
 name:                al
-version:             0.1.0.3
+version:             0.1.1
 synopsis:            OpenAL 1.1 raw API.
 description:         __OpenAL__ is a minimalistic sound API that aims to provide
                      bare features for /spacialized audio/. The API looks like
@@ -38,19 +38,29 @@
   type:     git
   location: git://github.com/phaazon/al.git
 
+flag stdcall {
+  description: Use the @stdcall@ call convention
+  default: False
+}
+
 library
   ghc-options:         -W -Wall -O2
 
+  if flag(stdcall)
+    cpp-options:       -DCALLCV=stdcall
+  else
+    cpp-options:       -DCALLCV=ccall
+
   if os(windows)
-    extra-lib-dirs:    "C:\\Program Files (x86)\\OpenAL 1.1 SDK\\libs"
     include-dirs:      "C:\\Program Files (x86)\\OpenAL 1.1 SDK\\include"
+    extra-libraries:   OpenAL32
 
     if arch(i386)
-      cpp-options:     -DCALLCV=stdcall
+      extra-lib-dirs:  "C:\\Program Files (x86)\\OpenAL 1.1 SDK\\libs\\Win32"
     else
-      cpp-options:     -DCALLCV=ccall
+      extra-lib-dirs:  "C:\\Program Files (x86)\\OpenAL 1.1 SDK\\libs\\Win64"
   else
-    cpp-options:       -DCALLCV=ccall
+    extra-libraries:   openal
 
   build-tools:         c2hs >= 0.23 && < 0.24
 
diff --git a/src/Sound/ALC/Device.chs b/src/Sound/ALC/Device.chs
--- a/src/Sound/ALC/Device.chs
+++ b/src/Sound/ALC/Device.chs
@@ -15,5 +15,5 @@
 import Sound.AL.Types
 import Sound.ALC.Types
 
-foreign import CALLCV "alcOpenDevice" alcOpenDevice :: Ptr ALubyte -> IO (Ptr ALCdevice)
-foreign import CALLCV "alcCloseDevice" alcCloseDevice :: Ptr ALCdevice -> IO ()
+foreign import CALLCV alcOpenDevice :: Ptr ALubyte -> IO (Ptr ALCdevice)
+foreign import CALLCV alcCloseDevice :: Ptr ALCdevice -> IO ()
