Visual Studio 2010生成dll并使用

新建Win32控制台应用程序,选择下一步,选择dll那个如果可能的话尽量选择空项目
如果没有语法错误,直接生成就会有dll文件构建成功

本例为作者仿照java中StringTokenizer做的Sample,cpp文件一并附上

StringTokenizer.h

#pragma once
#ifdef EXPORTS
#define EXPORTS __declspec(dllexport) 
#else
#define EXPORTS __declspec(dllimport) 
#endif
#include <string>

using namespace std;

class StringTokenizer
{
public:
	EXPORTS StringTokenizer(string, string, int cur=0);
	~StringTokenizer(void);
	EXPORTS string next();
	EXPORTS bool hasNext();
private:
	string m_str;
	string m_divider;
	int m_cur;
};
在需要暴露的接口前使用已经定义了的EXPORTS宏,宏名无所谓,主要是后边的
__declspec(dllimport)

静态连接库的生成和使用太简单了,这里不讨论了。

StringTokenizer.cpp

#include "StringTokenizer.h"


StringTokenizer::StringTokenizer(string str, string divider, int cur):m_str(str), m_divider(divider), m_cur(cur)
{
}


StringTokenizer::~StringTokenizer(void)
{
}

string StringTokenizer::next(){
	if(m_divider.length() >= 1){
		m_str=m_str.substr(m_cur, m_str.length());
		int cur=m_str.find(m_divider);
		if(cur!=-1){
			m_cur=cur+m_divider.length();
			return m_str.substr(0, cur);
		}else if(m_str.length()!=0){
			m_cur=cur;
			return m_str;
		}
	}else{
		m_cur=-1;
		m_str="";
	}
	return "";
}

bool StringTokenizer::hasNext(){
	return m_cur!=-1&&(m_str.length()!=0);
}
对于这个类有什么bug可以评论告知我,谢谢了






你可能感兴趣的:(C++,dll,Visual,Studio)