我在我的Visual Studio 2012创建亲一个新的DLL项目和主.cpp文件,除了这行空:如何在C++中创建一个名称空间和构造函数?
#include "stdafx.h"
在这个DLL项目我有一个新的c语言项目(模块),我加入一些功能在里面。
事实上,我想在我的主要.cpp文件中创建一些函数,将从c项(模块)调用函数。
例如在.cpp文件中我会有这样的事情:
void start()
{
encoder.start();
}
然后在我的.cpp需要添加一个构造函数,因此我可以打电话给那里的start()
如何我应该这样做吗?
这里是我的解决方案中的一个例子,我有两个项目一个控制台应用程序一个DLL。 这是从控制台应用项目的主CPP文件的内容:
#include "stdafx.h"
#include "targetver.h"
extern "C" {
void video_encode_example(const char *filename);
}
int _tmain(int argc, _TCHAR* argv[])
{
video_encode_example("adi.avi");
return 0;
}
vide_encode_example是从i在控制台应用程序项目创建该C项(文件/模块)的函数。我有一个文件名为example.c和video_encode_example在example.c
现在我向溶液中加入一个新的DLL项目和main.cpp的文件,除了行空的:#include“stdafx.h中”
什么,我想在这main.cpp的dll项目做的是两两件事:
为了例如创建一些功能
无效thisstart(){ }
然后,我想在这个启动函数中调用一个start()函数,它在我创建的dll项目中的c文件/模块中。
因此,它应该是这样的:
void thisstart()
{
start();
}
从哪里开始();是从C模块/文件
然后,我要在c#中使用此dll和c#我想能够使用thisstart()函数。
编辑
这是主要的。H的含有
namespace dllproj{
extern "C" void start();
void thisstart();
}
我得到两个错误,现在dllproj:
- 错误2错误C2054:预期 '(' 跟随 '命名空间'
- 4智能感知:预期的标识符
那么这就是cpp文件内容现在:
#define dllproj;
#include "stdafx.h"
#include "targetver.h"
#include "main.h"
void thisstart()
{
dllproj;::start();
}
而且我得到了两个错误:
- 的定义行:错误1错误C2008: ';':意外的宏定义
- 在dllproj; ::开始();错误3错误C2143:语法错误:缺少';'之前':'
请给我看完整的解决方案,并向我解释在CSHARP中我将使用哪个变量与dll为其创建实例并在cpp中调用此函数?在csharp中,例如当我添加dll时:test = new something();然后test.thisstart();
这个问题很难理解。我认为如果你发布你写的代码会有帮助。没关系,如果它是错误的,它会帮助人们理解你正在尝试做什么。 – john 2013-04-25 16:07:35
它应该不是在'encode.start()'内嵌入'start()'吗?你的例子试图从c调用C++我猜?请澄清 – 2013-04-25 16:09:01
为什么你认为你需要一个构造函数和/或命名空间?你以前用过吗?为什么你认为它们在DLL中的用法与其他任何类型的项目中的不同?你确定你想要一个DLL吗? – 2013-04-25 16:15:28