新建Win32控制台应用程序,选择下一步,选择dll那个如果可能的话尽量选择空项目
如果没有语法错误,直接生成就会有dll文件构建成功本例为作者仿照java中StringTokenizer做的Sample,cpp文件一并附上
StringTokenizer.h
#pragma once#ifdef EXPORTS#define EXPORTS __declspec(dllexport) #else#define EXPORTS __declspec(dllimport) #endif#include在需要暴露的接口前使用已经定义了的EXPORTS宏,宏名无所谓,主要是后边的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;};
__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可以评论告知我,谢谢了