新建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可以评论告知我,谢谢了