分类 C/C++ 下的文章

C++中嵌入python

#include 
#include 

using namespace std;

int main(int argc, char* argv[]) {
	PyObject *pModule, *pDict, *pFunc;
	PyObject *pArgs, *pArg, *pResult;
	
	Py_Initialize();
	// ...
	PyRun_SimpleString("import sys");
	PyRun_SimpleString("sys.path.append('./')");
	
	// ...
	pModule = PyImport_ImportModule("callback");

	if(pModule != NULL) {
		pDict = PyModule_GetDict(pModule);
		pFunc = PyDict_GetItemString(pDict, "hello");

		if(pFunc && PyCallable_Check(pFunc)) {
			pResult = PyObject_CallObject(pFunc, NULL);
			if(pResult != NULL) {
				cout << PyString_AsString(pResult) << endl;

				Py_DECREF(pResult);
			}
			
		}
		Py_XDECREF(pFunc);
		Py_DECREF(pDict);
		Py_DECREF(pModule);
	}

	// Py_DECREF(pArgs);
	// Py_DECREF(pArg);
	
	Py_Finalize();
	
	return 0;
}

內容粗略,僅是記錄一下,有待更新。

C++获取程序所在目录

#include 
#include 
#include 

using namespace std;

string selfPath();

int main() {
	string abspath = selfPath();
	cout << abspath << endl;
	return 0;
}

string selfPath() {
	char buff[1024];
	ssize_t len = readlink("/proc/self/exe", buff, sizeof(buff)-1);
	if(len != -1) {
		buff[len] = '\0';
		return dirname(buff);
	}
	return "";
}

C++ console显示进度条

#include 
#include 

using namespace std;

int main() {
	for(int i = 0; i <=10; i++) {
		// flush擦除,\r定位到行首
		cout << flush << '\r' << string(i, '#');

		sleep(1);
	}
	cout << endl;

	cin.get();
	return 0;
}

visual c++杂记

控制台应用程序增加图标

新建文件icon.rc,与图标文件icon.ico放在同一目录下

MAINICON ICON icon.ico

用visual studio打开另存为res文件。
新建一个项目,在资源里添加进刚才的res文件,编译就可以了。

控制台程序不显示控制台

修改程序入口

#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup")