2013-04-25 27 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

相關問題