小编aki*_*kif的帖子

如何使用非托管代码中的托管代码?

如何从本机C++(非托管代码)调用.NET代码?我想将.NET代码公开给我的非托管(C++)应用程序,然后使用它们.更具体地说,我想从本机C++调用C#:).我知道有很多方法可以告诉我每种方法的优缺点吗?顺便说一句,我不想​​使用COM,那么现在有哪些选择呢?

是否有可能在C++/CLI中包装C#代码然后从C++调用它?如果是这样,我该怎么做?如何在C++/CLI中包装C#然后从C++调用它?

.net unmanaged c++-cli

5
推荐指数
2
解决办法
2786
查看次数

C++数据库连接?

嘿,我想知道如何用C++连接数据库?任何支持许多数据库的跨平台解决方案?我知道SQLAPI ++,但它是一个共享软件...所以任何免费的?如果我将操作系统仅限制为Windows,我可以使用哪些解决方案?

谢谢

c++ database connectivity

4
推荐指数
1
解决办法
964
查看次数

原子操作C++

在C++,Windows平台中,我想以原子的形式执行一组函数调用,以便执行不会切换到我的进程中的其他线程.我该怎么做呢?任何想法,提示?

编辑:我有一段代码,如:

someObject->Restart();

WaitForSingleObject(handle, INFINITE);
Run Code Online (Sandbox Code Playgroud)

现在,Restart()函数以异步方式工作,因此它会快速返回,当someObject重新启动时,它会从另一个线程向我发送一个事件,我在其中发信号通知我正在等待的事件句柄,从而继续处理.但现在的问题是,在代码到达WaitForSingleObject()部分之前,我接收到重启完成事件并且我发出信号,之后WaitForSingleObject()永远不会返回,因为它没有再次发出信号.这就是为什么我想将Restart()WaitForSingleObject()作为原子执行.

c++ windows multithreading

4
推荐指数
2
解决办法
2257
查看次数

指针数组

如何获取指向对象(类)的指针数组?

我需要为它们动态分配空间,并且直到运行时才确定数组的长度.任何人都可以解释并告诉我如何定义它吗?并可能解释它们是如何工作的,会非常好:)

c++ arrays pointers

3
推荐指数
2
解决办法
727
查看次数

如何在TCP/IP中添加消息长度的前缀

我正在通过TCP/IP发送消息,我需要在char数组中为消息长度添加前缀,然后发送它.我该怎么做?

还请你提供一个如何在另一端提取它的例子.如果可能的话,请解释一下.

我正在使用C++和Winsock.

编辑:

string writeBuffer = "Hello";

unsigned __int32 length = htonl(writeBuffer.length());
Run Code Online (Sandbox Code Playgroud)

它没有返回正确的长度而是非常大的数字.

对于接收部分,如果我使用ntohl(),那么我也得到一个大数而不是正确的长度?为什么会这样?我收到这样的

bool Server::Receive(unsigned int socketIndex)
{
    // Read data from the socket
    if (receivingLength)
    {
        bytesReceived = recv(socketArray[socketIndex - WSA_WAIT_EVENT_0],
            ((char*)&messageLength) + bytesReceived, MESSAGE_LENGTH_SIZE - bytesReceived, 0);

        if (bytesReceived == SOCKET_ERROR)
        {
            return false;
        }

        if (bytesReceived == MESSAGE_LENGTH_SIZE)
        {
            // If uncomment the following line,
            // I won't get the correct length, but a large number
            //messageLength = ntohl(messageLength);
            receivingLength = false;
            bytesReceived = 0; …
Run Code Online (Sandbox Code Playgroud)

c++ tcp winsock

3
推荐指数
1
解决办法
4704
查看次数

C#套接字编程

嘿,我正在做C#异步套接字编程的噩梦.你能指点我一本指南或教程或一本深入解释异步编程的书.如果可能包含如何使用Begin Send/Receive函数中的state参数来处理多个客户端.

c# sockets

3
推荐指数
1
解决办法
1万
查看次数

链接错误CString

我使用CString收到链接器错误,错误是:

error LNK2001: unresolved external symbol "private: static class ATL::CStringT<wchar_t,class StrTraitMFC<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > CConfiguration::_campaignFolderPath" (?_campaignFolderPath@CConfiguration@@0V?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@A)
Run Code Online (Sandbox Code Playgroud)

我有一个类定义为:

class CConfiguration
{
private:
    static CString _campaignFolderPath;

public:
    static void Read();

private:
    CConfiguration(void);
    ~CConfiguration(void);
};
Run Code Online (Sandbox Code Playgroud)

其Read方法定义为:

void CConfiguration::Read()
{
    CConfigFile configReader(_T("Config.ini"));
    TCHAR temp[1024];

    configReader.GetStringValue(_T("Campaigns"), _T("CampaignsFolderPath"), temp);

    _campaignFolderPath = temp;
}
Run Code Online (Sandbox Code Playgroud)

有关导致错误的原因的任何线索?我正在使用Visual Studio 2008

c++ linker mfc cstring

3
推荐指数
1
解决办法
2346
查看次数

哪个STL容器?

我需要一个容器(不一定是STL容器),它让我轻松地执行以下操作:

  • 在任何位置插入和移除元素
  • 按索引访问元素
  • 以任何顺序迭代元素

我使用了std :: list,但它不会让我插入任何位置(确实如此,但为此我必须迭代所有元素然后插入我想要的位置,这很慢,作为列表可能很大).你能推荐任何有效的解决方案吗?

c++ containers stl list

3
推荐指数
1
解决办法
1677
查看次数

C++ 函数重载类似转换

我收到一个错误,指出两个重载具有相似的转换。我尝试了太多东西,但没有任何帮助。

这是那段代码

CString GetInput(int numberOfInput, BOOL clearBuffer = FALSE, UINT timeout = INPUT_TIMEOUT);
CString GetInput(int numberOfInput, string szTerminationPattern, BOOL clearBuffer = FALSE, UINT timeout = INPUT_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)

我不明白string怎么可能等于long

我正在使用 Visual C++ 6(是的,我知道它很旧,我正在处理遗留代码,所以我很无助)

编辑:触发错误的代码行是

l_szOption = GetInput(13, FALSE, 30 * 10);
Run Code Online (Sandbox Code Playgroud)

c++ overloading ambiguity

3
推荐指数
1
解决办法
1310
查看次数

条件属性

一个快速的C#问题,我想知道在我的项目> Properties> Build中,有一个检查"Define DEBUG constant",所以如果我检查然后执行此操作,

[Conditional(DEBUG)]
public static void Foo() {
      Console.WriteLine("Executed Foo");
}
Run Code Online (Sandbox Code Playgroud)

看到它不是"DEBUG"它的DEBUG常量.这样可以吗?或者我是否必须在项目设置中的条件编译符号中添加"DEBUG"?还是#define呢?

c# debugging conditional conditional-compilation visual-studio-2008

3
推荐指数
1
解决办法
1086
查看次数