2013-04-25 69 views
0

我在我的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项目做的是两两件事:

  1. 为了例如创建一些功能

    无效thisstart(){ }

然后,我想在这个启动函数中调用一个start()函数,它在我创建的dll项目中的c文件/模块中。

因此,它应该是这样的:

void thisstart() 
    { 
    start(); 
    } 

从哪里开始();是从C模块/文件

然后,我要在c#中使用此dll和c#我想能够使用thisstart()函数。

编辑

这是主要的。H的含有

namespace dllproj{ 

    extern "C" void start(); 
    void thisstart(); 
} 

我得到两个错误,现在dllproj:

  1. 错误2错误C2054:预期 '(' 跟随 '命名空间'
  2. 4智能感知:预期的标识符

那么这就是cpp文件内容现在:

#define dllproj; 

#include "stdafx.h" 
#include "targetver.h" 
#include "main.h" 

void thisstart() 
{ 
    dllproj;::start(); 
} 

而且我得到了两个错误:

  1. 的定义行:错误1错误C2008: ';':意外的宏定义
  2. 在dllproj; ::开始();错误3错误C2143:语法错误:缺少';'之前':'

请给我看完整的解决方案,并向我解释在CSHARP中我将使用哪个变量与dll为其创建实例并在cpp中调用此函数?在csharp中,例如当我添加dll时:test = new something();然后test.thisstart();

+1

这个问题很难理解。我认为如果你发布你写的代码会有帮助。没关系,如果它是错误的,它会帮助人们理解你正在尝试做什么。 – john 2013-04-25 16:07:35

+0

它应该不是在'encode.start()'内嵌入'start()'吗?你的例子试图从c调用C++我猜?请澄清 – 2013-04-25 16:09:01

+0

为什么你认为你需要一个构造函数和/或命名空间?你以前用过吗?为什么你认为它们在DLL中的用法与其他任何类型的项目中的不同?你确定你想要一个DLL吗? – 2013-04-25 16:15:28

回答

0

从评论“开始()是在一个DLL项目(C语言文件我创建test.c的)”

1)创建一个头文件如main.h并添加以下

namespace dllproj{ 

    extern "c" 
    { 
     extern void start(); 
    } 
    void thisstart(); 
} 

2)添加到main.h和main.cpp中定义thisstart()

void dllproj::thisstart() 
{ 
    dllproj::start(); 
} 

确保start()被声明为__declspec(dllexport)在dll中。

+0

如何将我创建的h文件添加到cpp文件? – 2013-04-25 16:58:23

+0

'#include“main.h”'。你有这个错误吗? – 2013-04-25 17:00:29

+0

看看我的问题,我正在更新是的,我给了一些错误。 – 2013-04-25 17:02:51

相关问题