﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-acmercyj-文章分类-C#开发笔记</title><link>http://www.cppblog.com/acmercyj/category/16849.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 08 May 2011 13:27:17 GMT</lastBuildDate><pubDate>Sun, 08 May 2011 13:27:17 GMT</pubDate><ttl>60</ttl><item><title>在VS2008环境下编写C语言DLL，并在C++和C#项目下调用 （转载）</title><link>http://www.cppblog.com/acmercyj/articles/145931.html</link><dc:creator>mr_chen</dc:creator><author>mr_chen</author><pubDate>Sun, 08 May 2011 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/acmercyj/articles/145931.html</guid><wfw:comment>http://www.cppblog.com/acmercyj/comments/145931.html</wfw:comment><comments>http://www.cppblog.com/acmercyj/articles/145931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/acmercyj/comments/commentRss/145931.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/acmercyj/services/trackbacks/145931.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><font style="BACKGROUND-COLOR: #ffffff">1。编写DLL</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff">&nbsp;&nbsp;&nbsp; a)文件--打开--新建项目--Win32，右侧Win32项目，填写好项目名称，点击&#8220;下一步&#8221;，</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应用程序类型选择：&#8220;DLL(D)&#8221;，附加选项：空项目(E)，然后完成。</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff">&nbsp;&nbsp;&nbsp; b)编写头文件(edrlib.h)：<br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#ifdef&nbsp;__cplusplus&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;EXPORT&nbsp;extern&nbsp;"C"&nbsp;__declspec&nbsp;(dllexport)&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;EXPORT&nbsp;__declspec&nbsp;(dllexport)&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">EXPORT&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;&nbsp;EdrCenterTextA();&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">EXPORT&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;&nbsp;EdrCenterTextW();&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">EXPORT&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;IncCounter();&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#ifdef&nbsp;UNICODE&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;EdrCenterText&nbsp;EdrCenterTextW&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;EdrCenterText&nbsp;EdrCenterTextA&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000">&nbsp;&nbsp;</span></div>
<p>注解：</p>
<p>&nbsp;&nbsp;&nbsp; i. 定义 __cplusplus表示是供C++程序中调用。</p>
<p>&nbsp;&nbsp;&nbsp; ii.__declspec (dllexport)表示函数调用方式，此处表示VS2008工程属性调用的默认方式。更改方法：</p>
<p>&nbsp;&nbsp;&nbsp; 右击项目--属性--配置属性--C/C++--高级，更改右侧&#8220;调用约定&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp; c)编写DLL文件(edrlib.cpp)：<br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">edrlib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">counter供调用该DLL的所有应用程序共享&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">#pragma&nbsp;data_seg(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">shared</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;counter</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#pragma&nbsp;comment(linker,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/SECTION:shared,RWS</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;WINAPI&nbsp;DllMain(_In_&nbsp;HANDLE&nbsp;_HDllHandle,&nbsp;_In_&nbsp;DWORD&nbsp;_Reason,&nbsp;_In_opt_&nbsp;LPVOID&nbsp;_Reserved)&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_271_296_Open_Image onclick="this.style.display='none'; Codehighlighter1_271_296_Open_Text.style.display='none'; Codehighlighter1_271_296_Closed_Image.style.display='inline'; Codehighlighter1_271_296_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_271_296_Closed_Image onclick="this.style.display='none'; Codehighlighter1_271_296_Closed_Text.style.display='none'; Codehighlighter1_271_296_Open_Image.style.display='inline'; Codehighlighter1_271_296_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_271_296_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_271_296_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">EXPORT&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;EdrCenterTextA()&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_339_416_Open_Image onclick="this.style.display='none'; Codehighlighter1_339_416_Open_Text.style.display='none'; Codehighlighter1_339_416_Closed_Image.style.display='inline'; Codehighlighter1_339_416_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_339_416_Closed_Image onclick="this.style.display='none'; Codehighlighter1_339_416_Closed_Text.style.display='none'; Codehighlighter1_339_416_Open_Image.style.display='inline'; Codehighlighter1_339_416_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_339_416_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_339_416_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">调用DLL函数！</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ASSIC版本</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),MB_OK);&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">EXPORT&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;&nbsp;EdrCenterTextW()&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_454_529_Open_Image onclick="this.style.display='none'; Codehighlighter1_454_529_Open_Text.style.display='none'; Codehighlighter1_454_529_Closed_Image.style.display='inline'; Codehighlighter1_454_529_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_454_529_Closed_Image onclick="this.style.display='none'; Codehighlighter1_454_529_Closed_Text.style.display='none'; Codehighlighter1_454_529_Open_Image.style.display='inline'; Codehighlighter1_454_529_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_454_529_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_454_529_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">调用DLL函数！</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">UNICODE版本</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),MB_OK);&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">EXPORT&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;IncCounter()&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_566_596_Open_Image onclick="this.style.display='none'; Codehighlighter1_566_596_Open_Text.style.display='none'; Codehighlighter1_566_596_Closed_Image.style.display='inline'; Codehighlighter1_566_596_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_566_596_Closed_Image onclick="this.style.display='none'; Codehighlighter1_566_596_Closed_Text.style.display='none'; Codehighlighter1_566_596_Open_Image.style.display='inline'; Codehighlighter1_566_596_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_566_596_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_566_596_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">counter;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;</span></div>
<p>&nbsp; c)编译生成DLL。</p>
<p>2。调用DLL</p>
<p>&nbsp;&nbsp; 方法一、</p>
<p>&nbsp;&nbsp; 1。新建Win32应用程序空项目。</p>
<p>&nbsp;&nbsp; 2。把生成的dll、lib这2个文件复制到新建的目录下。</p>
<p>&nbsp;&nbsp; 3。添加导入库：工具--项目和解决方案--VC++目录，选择右侧&#8220;显示以下内容的目录&#8221;下的&#8220;库文件&#8221;，把lib所在目录添加。</p>
<p>&nbsp;&nbsp; 4。头文件：edrlib.h（与编写DLL中一样）</p>
<p>&nbsp;&nbsp; 5。源文件：main.c<br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_20_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_20_Open_Text.style.display='none'; Codehighlighter1_0_20_Closed_Image.style.display='inline'; Codehighlighter1_0_20_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_20_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_20_Closed_Text.style.display='none'; Codehighlighter1_0_20_Open_Image.style.display='inline'; Codehighlighter1_0_20_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_20_Closed_Text>/**/</span><span id=Codehighlighter1_0_20_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">#define&nbsp;cplusplus</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">c++调用方式&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">edrlib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#pragma&nbsp;comment(lib,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">edrlib.lib</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;WINAPI&nbsp;WinMain(__in&nbsp;HINSTANCE&nbsp;hInstance,&nbsp;__in_opt&nbsp;HINSTANCE&nbsp;hPrevInstance,&nbsp;__in_opt&nbsp;LPSTR&nbsp;lpCmdLine,&nbsp;__in&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nShowCmd&nbsp;)&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_251_417_Open_Image onclick="this.style.display='none'; Codehighlighter1_251_417_Open_Text.style.display='none'; Codehighlighter1_251_417_Closed_Image.style.display='inline'; Codehighlighter1_251_417_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_251_417_Closed_Image onclick="this.style.display='none'; Codehighlighter1_251_417_Closed_Text.style.display='none'; Codehighlighter1_251_417_Open_Image.style.display='inline'; Codehighlighter1_251_417_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_251_417_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_251_417_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;buf[</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">];&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(buf,L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">now,counter=%i</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,IncCounter());&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,buf,L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,MB_OK);&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;EdrCenterText();&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<p>解释： <br>&nbsp;&nbsp; 可注释#pragma comment(lib,"TestDLL2.lib")这条，但必须设置链接库，方法：</p>
<p>&nbsp;&nbsp; 右击项目--属性--配置属性--链接器--输入--附加依赖项：edrlib.lib</p>
<p>&nbsp; 6.运行测试成功。</p>
<p>【以上内容转自：<a href="http://blog.csdn.net/breezes2008/archive/2010/02/25/5326861.aspx">http://blog.csdn.net/breezes2008/archive/2010/02/25/5326861.aspx</a>】</p>
<p>3、在C#中调用DLL</p>
<p>此示例使用 C 程序创建一个 DLL，在下一示例中将从 C# 程序调用该 DLL。</p>
<p>&nbsp;&nbsp; <br>// cmdll.c// Compile with: /LDint __declspec(dllexport) SampleMethod(int i){&nbsp;&nbsp; return i*10;} </p>
<p>&nbsp; 如果是Web项目，把DLL复制到bin目录下。</p>
<p>&nbsp; 如果是桌面程序，把DLL复制到可执行行文件目录下。</p>
<p>引用代码：<br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_73_251_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_251_Open_Text.style.display='none'; Codehighlighter1_73_251_Closed_Image.style.display='inline'; Codehighlighter1_73_251_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_73_251_Closed_Image onclick="this.style.display='none'; Codehighlighter1_73_251_Closed_Text.style.display='none'; Codehighlighter1_73_251_Open_Image.style.display='inline'; Codehighlighter1_73_251_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;System;</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;System.Runtime.InteropServices;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MainClass&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_73_251_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_73_251_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;[DllImport(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cmdll.dll</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)]&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;SampleMethod(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x);&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Main()&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_174_250_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_174_250_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SampleMethod()&nbsp;returns&nbsp;{0}.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SampleMethod(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">));&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">}</span></span></div>
<p><br><br>from:http://apps.hi.baidu.com/share/detail/33471191<br></p>
</font>
<img src ="http://www.cppblog.com/acmercyj/aggbug/145931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/acmercyj/" target="_blank">mr_chen</a> 2011-05-08 10:41 <a href="http://www.cppblog.com/acmercyj/articles/145931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>