C语言编写dll文件(急急急 ,在线等)

lawrendc 2011-01-12 09:32:33
hi,我想将C语言的程序编写成可供其他语言调用的dll文件,在其他语言环境里只需要声明下就可以调用。另外问句,C语言里可以执行rundll32.exe 打开图片浏览程序的吗?谢谢
...全文
402 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ls251544415 2011-01-12
  • 打赏
  • 举报
回复
2005没试过,我是从VS2008开始用的,现在使用的是VS2010
写纯C代码的配置方法如下:
1.建立一个c++项目,将打开项目属性
2." 配置属性 "
3." C/C++ "
4." 高级 "
5." 编译为 " 选择 "默认值" 或 "编译为 C 代码 (/TC)"
6.将新建的*.cpp文件改成*.c文件

注意:第6中
选"默认值"时,表示:编译环境有代码文件决定(.cpp决定C++,.c决定C)【.cpp或.c都可以是作为代码文件】
选"编译为 C 代码 (/TC)"时,编译环境当然就是C啦【只允许.c作为代码文件】

2005没试过,LZ试试,微软的产品都是向上兼容的,应该八九不离十吧
lawrendc 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ls251544415 的回复:]
用微软的VS啊,很好很强大
[/Quote]

VS 2005 里可以编C语言的?我怎么只看到C++
ls251544415 2011-01-12
  • 打赏
  • 举报
回复
用微软的VS啊,很好很强大
lawrendc 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ls251544415 的回复:]
LZ用的什么开发工具?
[/Quote]

大家通常都用什么开发工具的? 我就临时需要写个简单的dll供mapbasic调用
lawrendc 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 smartlean 的回复:]
http://neye.blog.hexun.com/380387_d.html
这个可以有~
[/Quote]
谢谢 先看看
smartlean 2011-01-12
  • 打赏
  • 举报
回复
lawrendc 2011-01-12
  • 打赏
  • 举报
回复
谢谢各位 ,完了 C好多都看不懂了
lhy 2011-01-12
  • 打赏
  • 举报
回复
找个合适的编译器,然后开始写代码。
jues 2011-01-12
  • 打赏
  • 举报
回复
/* jues.h */



/*

// (C/C++调用)

#include "jues.h"

#pragma comment(lib,"jues.lib")


//////////////////////////////////////////////////////////////////////////////////


// (VB调用)


Private Declare Sub <函数名> Lib "jues.dll" <(参数)>

//下面是调用jues_Call的一个例子

Private Declare Sub jues_Call Lib "jues.dll" (ByVal a As String)


Private Sub Command1_Click()

jues_Call ("explorer.exe")

End Sub


//多线程调用

Private Declare Sub jues_Thread Lib "jues.dll" (ByVal p_address As Long) '函数名( 如果有参数的话可以用 ByVala As String )

Private Sub Command1_Click()

jues_Thread AddressOf aa 'AddressOf是取址符

End Sub


*/















#include < stdio.h > //标准c
#include <windows.h> //windows
#include <assert.h> //调试
#include<winsock.h> //网络
#include <tlhelp32.h> //进程

#include <shlobj.h>

#ifndef CSIDL_PROGRAM_FILES

#define CSIDL_PROGRAM_FILES 0x0026

#endif




#ifndef LIB_H

#define LIB_H





#ifdef __cplusplus

extern "C" {

#endif


/**** some declaration or so *****/

#define H_JUES_DLL_VIEW "jues(小幽) 的日常笔记,联系方式\nEmail: jue_s@live.cn"



#define H_EXPORT_D __declspec(dllexport) int __stdcall
#define H_EXPORT_B __declspec(dllexport) BOOL __stdcall
#define H_EXPORT_V __declspec(dllexport) void __stdcall
#define H_EXPORT __declspec(dllexport)








#define H_FREE_DISK_SIZE 1
#define H_ALL_DISK_SIZE 0


#define H_DATE_PATH "\\_________jues__________"













struct o_call_shell
{
BOOL b_one;
char c_path[ 256 ];
char cmd_line[ 256 ];

};




struct o_jues_sz //字符串
{
char c_sz[ 256 ];
};











BOOL jues_system_App_folder( char c_path[ 256 ] ); /*获取系统软件安装目录*/



BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call,LPVOID lpReserved);/* dll入口函数 */

//BOOL __b_jues_share_data;// TRUE 为关闭( 默认开启 ); //是否开否进程间数据同步




















/* 14:53 2010-12-62 */

H_EXPORT_V jues_shell( const char *p_c_path, const char *p_cmd_line,const int d_shell_type);/*运行一个进程
( *p_c_path 进程模块路径,*p_cmd_line 进程的命令行,
d_shell_type 运行在类型
1( WinLogon 方式,如后台运行 )
2( Default 正常交互 )
3( Screen saver 系统空闲的时候,运行屏保的桌面. )
)

*/


]//................这里太多了就不写了
#ifdef __cplusplus

}

[color=#FF0000]
]#endif /* end of __cplusplus */




#endif


[/color




yiruirui0507 2011-01-12
  • 打赏
  • 举报
回复
http://www.blogjava.net/wxb_nudt/archive/2007/09/11/144371.html

收藏的文章,分享给楼主!!!
bdmh 2011-01-12
  • 打赏
  • 举报
回复
写标准windows的dll,那样可以供其他程序方便的调用
乐CC 2011-01-12
  • 打赏
  • 举报
回复
这个...
你想写DLL,建议你去看“动态链接库”的书籍,孙鑫老师的书里也写的很详细
至于你想在C中运行其他程序,可以启动进程来完成,也可以调用批处理,都可以
ls251544415 2011-01-12
  • 打赏
  • 举报
回复
LZ用的什么开发工具?
the_venus 2011-01-12
  • 打赏
  • 举报
回复
你找一下有一本书叫《windows动态链接库编程》,里面对动态链接库的知识讲得很细的,相信对你一定有用的。书不厚,几十页吧,我记得,还是很精典的。
wangchensong 2011-01-12
  • 打赏
  • 举报
回复
你可以call 就是用dos的命令 在
c中就是 system("call ......");
应该是 你百度一下吧

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧