<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dipplum.com &#187; mikmod</title>
	<atom:link href="http://dipplum.com/tag/mikmod/feed/" rel="self" type="application/rss+xml" />
	<link>http://dipplum.com</link>
	<description>Be  the change you wanna see in the world</description>
	<lastBuildDate>Sat, 12 Nov 2011 07:38:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Visual C++ 2009编译libmikmod</title>
		<link>http://dipplum.com/2009/11/10/visualc-compile-libmikmod/</link>
		<comments>http://dipplum.com/2009/11/10/visualc-compile-libmikmod/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 03:13:18 +0000</pubDate>
		<dc:creator>li</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[mikmod]]></category>
		<category><![CDATA[stratagus]]></category>
		<category><![CDATA[visualc]]></category>

		<guid isPermaLink="false">http://dipplum.com/2009/11/10/visual-c-2009%e7%bc%96%e8%af%91libmikmod/</guid>
		<description><![CDATA[1. 主页 http://mikmod.raphnet.net/ 2. 最新版本 3.2.0-beta2，2004年2月发布 &#160;&#160;&#160; 下载 http://mikmod.raphnet.net/files/libmikmod-3.2.0-beta2.zip 3. 编译依赖 &#160;&#160;&#160; DirectX SDK中的头文件。最新的DirectX SDK 2009 Auguest可以从微软（http://is.gd/4Q3Mo）下载。或者只下载其中include目录和lib目录打包（http://is.gd/4Q416）。 4. 编译方法 &#160;&#160;&#160; 解压后，从Visual Studio 2008的命令行提示符下进入win32目录，首先设置INCLUDE变量，然后编译。如果编译静态链接库，可以参见下例（把directx的目录修改成自己的）： cd win32 set INCLUDE=..\..\directxsdk-0908\include;%INCLUDE% nmake -f makefile.static 5. Bug &#160;&#160;&#160; include\mikmod_internal.h文件中有bug，导致不能在Visual Studio 2008下编译，在该文件的include之后加入下面5行： #ifdef _mm_malloc #undef _mm_malloc #undef _mm_calloc #undef _mm_free #endif 6. 其他注意事项 &#160;&#160;&#160; 1. 编译Multithreaded DLL版的静态库 &#160;&#160;&#160; 编译生成的静态库，为了更好的与其他库交互，最好是编译生成Multithreaded DLL版本，也就是编译时加/MD参数。由于libmikmod默认的头文件不支持编译静态库的同时，链接到MSVCRT的Muiltithreaded DLL。所以要做相应修改。 [...]]]></description>
			<content:encoded><![CDATA[<p>1. 主页 <a href="http://mikmod.raphnet.net/">http://mikmod.raphnet.net/</a></p>
<p>2. 最新版本 3.2.0-beta2，2004年2月发布</p>
<p>&#160;&#160;&#160; 下载 <a href="http://mikmod.raphnet.net/files/libmikmod-3.2.0-beta2.zip">http://mikmod.raphnet.net/files/libmikmod-3.2.0-beta2.zip</a></p>
<p>3. 编译依赖</p>
<p>&#160;&#160;&#160; DirectX SDK中的头文件。最新的DirectX SDK 2009 Auguest可以从微软（<a href="http://is.gd/4Q3Mo）">http://is.gd/4Q3Mo）</a>下载。或者只下载其中include目录和lib目录打包（<a href="http://is.gd/4Q416">http://is.gd/4Q416</a>）。</p>
<p>4. 编译方法</p>
<p>&#160;&#160;&#160; 解压后，从Visual Studio 2008的命令行提示符下进入win32目录，首先设置INCLUDE变量，然后编译。如果编译静态链接库，可以参见下例（把directx的目录修改成自己的）：</p>

<div class="wp_syntax"><div class="code"><pre class="batch" style="font-family:monospace;">cd win32
set INCLUDE=..\..\directxsdk-0908\include;%INCLUDE%
nmake -f makefile.static</pre></div></div>

</p>
<p><span id="more-425"></span></p>
<p>5. Bug</p>
<p>&#160;&#160;&#160; include\mikmod_internal.h文件中有bug，导致不能在Visual Studio 2008下编译，在该文件的include之后加入下面5行：</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#ifdef _mm_malloc</span>
<span style="color: #339933;">#undef _mm_malloc</span>
<span style="color: #339933;">#undef _mm_calloc</span>
<span style="color: #339933;">#undef _mm_free</span>
<span style="color: #339933;">#endif</span></pre></div></div>

<p>6. 其他注意事项</p>
<p>&#160;&#160;&#160; 1. 编译Multithreaded DLL版的静态库</p>
<p>&#160;&#160;&#160; 编译生成的静态库，为了更好的与其他库交互，最好是编译生成Multithreaded DLL版本，也就是编译时加/MD参数。由于libmikmod默认的头文件不支持编译静态库的同时，链接到MSVCRT的Muiltithreaded DLL。所以要做相应修改。</p>
<p>&#160;&#160;&#160; 2. 生成include\mikmod.h</p>
<p>&#160;&#160;&#160; 由于Windows系统没有configure过程，include目录下仅有一个mikmod.h.in，要把其中的版本号替换生成mikmod.h。 </p>
<p>&#160;&#160;&#160; 3. 静态库中缺少load_asy</p>
<p>&#160;&#160;&#160; 静态库中包含的目标文件好像不全，却load_asy，需要修改Makefile将其加进来。</p>
<p>7. 完整的patch</p>
<p>&#160;&#160;&#160; 下面是包含上述改动完整的patch。打上后把include\mikmod.in.h改名为include\mikmod.h即可。</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;">diff -Naur libmikmod-3.2.0-beta2\include\mikmod.h.in libmikmod-3.2.0-beta2-<span style="">2</span>\include\mikmod.h.in
<span style="color: #888822;">--- libmikmod-3.2.0-beta2\include\mikmod.h.in	Wed Feb 18 09:10:40 2004</span>
<span style="color: #888822;">+++ libmikmod-3.2.0-beta2-2\include\mikmod.h.in	Mon Apr 26 18:33:00 2004</span>
<span style="color: #440088;">@@ -44,7 +44,7 @@</span>
 #ifdef DLL_EXPORTS
 #define MIKMODAPI __declspec<span style="">&#40;</span>dllexport<span style="">&#41;</span>
 #else
<span style="color: #991111;">-#define MIKMODAPI __declspec<span style="">&#40;</span>dllimport<span style="">&#41;</span></span>
<span style="color: #00b000;">+#define MIKMODAPI</span>
 #endif
 #else
 #define MIKMODAPI
<span style="color: #440088;">@@ -54,9 +54,9 @@</span>
  *	========== Library version
  */
&nbsp;
<span style="color: #991111;">-#define LIBMIKMOD_VERSION_MAJOR @LIBMIKMOD_MAJOR_VERSION@L</span>
<span style="color: #991111;">-#define LIBMIKMOD_VERSION_MINOR @LIBMIKMOD_MINOR_VERSION@L</span>
<span style="color: #991111;">-#define LIBMIKMOD_REVISION      @LIBMIKMOD_MICRO_VERSION@L</span>
<span style="color: #00b000;">+#define LIBMIKMOD_VERSION_MAJOR 3L</span>
<span style="color: #00b000;">+#define LIBMIKMOD_VERSION_MINOR 2L</span>
<span style="color: #00b000;">+#define LIBMIKMOD_REVISION      0L</span>
&nbsp;
 #define LIBMIKMOD_VERSION \
 	<span style="">&#40;</span><span style="">&#40;</span>LIBMIKMOD_VERSION_MAJOR&amp;lt;&amp;lt;<span style="">16</span><span style="">&#41;</span>| \
<span style="color: #440088;">@@ -83,7 +83,7 @@</span>
 typedef char CHAR;
 #endif
&nbsp;
<span style="color: #991111;">-@DOES_NOT_HAVE_SIGNED@</span>
<span style="color: #00b000;">+</span>
&nbsp;
 #if defined<span style="">&#40;</span>__arch64__<span style="">&#41;</span> || defined<span style="">&#40;</span>__alpha<span style="">&#41;</span>
 /* <span style="">64</span> bit architectures */
diff -Naur libmikmod-3.2.0-beta2\include\mikmod_internals.h libmikmod-3.2.0-beta2-<span style="">2</span>\include\mikmod_internals.h
<span style="color: #888822;">--- libmikmod-3.2.0-beta2\include\mikmod_internals.h	Wed Feb 18 08:29:18 2004</span>
<span style="color: #888822;">+++ libmikmod-3.2.0-beta2-2\include\mikmod_internals.h	Tue Nov 10 10:47:10 2009</span>
<span style="color: #440088;">@@ -47,6 +47,12 @@</span>
 #pragma warning<span style="">&#40;</span>disable:<span style="">4761</span><span style="">&#41;</span>
 #endif
&nbsp;
<span style="color: #00b000;">+#ifdef _mm_malloc</span>
<span style="color: #00b000;">+#undef _mm_malloc</span>
<span style="color: #00b000;">+#undef _mm_calloc</span>
<span style="color: #00b000;">+#undef _mm_free</span>
<span style="color: #00b000;">+#endif</span>
<span style="color: #00b000;">+</span>
 /*========== More type definitions */
&nbsp;
 /* SLONGLONG: 64bit, signed */
diff -Naur libmikmod-3.2.0-beta2\win32\Makefile.static libmikmod-3.2.0-beta2-<span style="">2</span>\win32\Makefile.static
<span style="color: #888822;">--- libmikmod-3.2.0-beta2\win32\Makefile.static	Wed Jan 21 12:29:36 2004</span>
<span style="color: #888822;">+++ libmikmod-3.2.0-beta2-2\win32\Makefile.static	Mon Nov 09 15:28:39 2009</span>
<span style="color: #440088;">@@ -11,7 +11,7 @@</span>
 # Your compiler here
 CC=cl
 # Compiler flags
<span style="color: #991111;">-CFLAGS=/nologo /O2 /MTd /Zi /Fm /c /DWIN32 /DDRV_DS /DDRV_WIN /DHAVE_FCNTL_H /DHAVE_MALLOC_H /DHAVE_LIMITS_H</span>
<span style="color: #00b000;">+CFLAGS=/nologo /O2 /MD /Zi /Fm /c /DWIN32 /DDRV_DS /DDRV_WIN /DHAVE_FCNTL_H /DHAVE_MALLOC_H /DHAVE_LIMITS_H</span>
 COMPILE=$<span style="">&#40;</span>CC<span style="">&#41;</span> $<span style="">&#40;</span>CFLAGS<span style="">&#41;</span> /I..\include /I.. /I..\win32
&nbsp;
 .SUFFIXES:
<span style="color: #440088;">@@ -29,6 +29,7 @@</span>
     load_669.o load_amf.o load_dsm.o load_far.o load_gdm.o load_it.o  \
     load_imf.o load_m15.o load_med.o load_mod.o load_mtm.o load_okt.o \
     load_s3m.o load_stm.o load_stx.o load_ult.o load_uni.o load_xm.o \
<span style="color: #00b000;">+    load_asy.o \</span>
     mmalloc.o mmerror.o mmio.o \
     mdriver.o mdreg.o mloader.o mlreg.o mlutil.o mplayer.o munitrk.o mwav.o \
     npertab.o sloader.o virtch.o virtch2.o virtch_common.o
<span style="color: #440088;">@@ -106,6 +107,9 @@</span>
 load_s3m.o:     ..\loaders\load_s3m.c \
 	                ..\win32\mikmod_build.h ..\include\mikmod_internals.h
 	$<span style="">&#40;</span>COMPILE<span style="">&#41;</span> /Fo$@ ..\loaders\load_s3m.c
<span style="color: #00b000;">+load_asy.o:     ..\loaders\load_asy.c \</span>
<span style="color: #00b000;">+	                ..\win32\mikmod_build.h ..\include\mikmod_internals.h</span>
<span style="color: #00b000;">+	$<span style="">&#40;</span>COMPILE<span style="">&#41;</span> /Fo$@ ..\loaders\load_asy.c</span>
 load_stm.o:     ..\loaders\load_stm.c \
 	                ..\win32\mikmod_build.h ..\include\mikmod_internals.h
 	$<span style="">&#40;</span>COMPILE<span style="">&#41;</span> /Fo$@ ..\loaders\load_stm.c
diff -Naur libmikmod-3.2.0-beta2\win32\mikmod_build.h libmikmod-3.2.0-beta2-<span style="">2</span>\win32\mikmod_build.h
<span style="color: #888822;">--- libmikmod-3.2.0-beta2\win32\mikmod_build.h	Thu Feb 19 09:15:22 2004</span>
<span style="color: #888822;">+++ libmikmod-3.2.0-beta2-2\win32\mikmod_build.h	Mon Nov 09 15:19:11 2009</span>
<span style="color: #440088;">@@ -44,7 +44,7 @@</span>
 #ifdef DLL_EXPORTS
 #define MIKMODAPI __declspec<span style="">&#40;</span>dllexport<span style="">&#41;</span>
 #else
<span style="color: #991111;">-#define MIKMODAPI __declspec<span style="">&#40;</span>dllimport<span style="">&#41;</span></span>
<span style="color: #00b000;">+#define MIKMODAPI</span>
 #endif
 #else
 #define MIKMODAPI</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://dipplum.com/2009/11/10/visualc-compile-libmikmod/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

